use of jmri.util.JmriJFrame in project JMRI by JMRI.
the class SignalGroupTableAction method addPressed.
/**
* Respond to click on Add... button below Signal Group Table.
* <p>
* Create JPanel with options for configuration.
* @param e Event from origin; null when called from Edit button in Signal Group Table row
*/
@Override
protected void addPressed(ActionEvent e) {
if (inEditMode) {
log.debug("Can not open another editing session for Signal Groups.");
// add user warning that a 2nd session not allowed (cf. Logix)
// Already editing a Signal Group, ask for completion of that edit first
String workingTitle = _systemName.getText();
if (workingTitle.isEmpty() || workingTitle == null) {
workingTitle = Bundle.getMessage("NONE");
_systemName.setText(workingTitle);
}
javax.swing.JOptionPane.showMessageDialog(addFrame, Bundle.getMessage("SigGroupEditBusyWarning", workingTitle), Bundle.getMessage("ErrorTitle"), javax.swing.JOptionPane.ERROR_MESSAGE);
return;
}
inEditMode = true;
_mastAspectsList = null;
jmri.SignalHeadManager shm = InstanceManager.getDefault(jmri.SignalHeadManager.class);
List<String> systemNameList = shm.getSystemNameList();
_signalHeadsList = new ArrayList<SignalGroupSignalHead>(systemNameList.size());
// create list of all available Single Output Signal Heads to choose from
Iterator<String> iter = systemNameList.iterator();
// int i = 1; // for debug of iter next
while (iter.hasNext()) {
String systemName = iter.next();
SignalHead sh = shm.getBySystemName(systemName);
// debug using i & sysnamelist.size
if (sh != null) {
if (sh.getClass().getName().contains("SingleTurnoutSignalHead")) {
String userName = sh.getUserName();
// add every single output signal head item to the list
_signalHeadsList.add(new SignalGroupSignalHead(systemName, userName));
} else {
log.debug("Signal Head " + systemName + " is not a Single Output Controlled Signal Head");
}
} else {
// this is not an error and the value of systemName mentioned is actually from the last head that was indeed loaded
log.error("Failed to get signal head {} (SGTA)", systemName);
}
}
// Set up Add/Edit Signal Group window
if (addFrame == null) {
// if it's not yet present, create addFrame
mainSignalComboBox = new JmriBeanComboBox(jmri.InstanceManager.getDefault(jmri.SignalMastManager.class), null, JmriBeanComboBox.DisplayOptions.DISPLAYNAME);
// causes NPE when user selects that 1st line, so do not respond to result null
mainSignalComboBox.setFirstItemBlank(true);
addFrame = new JmriJFrame(Bundle.getMessage("AddSignalGroup"), false, true);
addFrame.addHelpMenu("package.jmri.jmrit.beantable.SignalGroupAddEdit", true);
addFrame.setLocation(100, 30);
addFrame.getContentPane().setLayout(new BoxLayout(addFrame.getContentPane(), BoxLayout.Y_AXIS));
Container contentPane = addFrame.getContentPane();
// add system name
JPanel ps = new JPanel();
ps.setLayout(new FlowLayout());
ps.add(nameLabel);
ps.add(_systemName);
_systemName.setToolTipText(Bundle.getMessage("SignalGroupSysNameTooltip"));
ps.add(fixedSystemName);
fixedSystemName.setVisible(false);
contentPane.add(ps);
// add user name
JPanel p = new JPanel();
p.setLayout(new FlowLayout());
p.add(userLabel);
p.add(_userName);
_userName.setToolTipText(Bundle.getMessage("SignalGroupUserNameTooltip"));
contentPane.add(p);
// add Signal Masts/Heads Display Choice
JPanel py = new JPanel();
py.add(new JLabel(Bundle.getMessage("Show")));
selGroup = new ButtonGroup();
allButton = new JRadioButton(Bundle.getMessage("All"), true);
selGroup.add(allButton);
py.add(allButton);
allButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Setup for display of all Signal Masts & SingleTO Heads, if needed
if (!showAll) {
showAll = true;
_SignalGroupHeadModel.fireTableDataChanged();
_AspectModel.fireTableDataChanged();
}
}
});
includedButton = new JRadioButton(Bundle.getMessage("Included"), false);
selGroup.add(includedButton);
py.add(includedButton);
includedButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// Setup for display of included Turnouts only, if needed
if (showAll) {
showAll = false;
initializeIncludedList();
_SignalGroupHeadModel.fireTableDataChanged();
_AspectModel.fireTableDataChanged();
}
}
});
py.add(new JLabel(" " + Bundle.getMessage("_and_", Bundle.getMessage("LabelAspects"), Bundle.getMessage("SignalHeads"))));
contentPane.add(py);
// add main signal mast table
JPanel p3 = new JPanel();
p3.setLayout(new BoxLayout(p3, BoxLayout.Y_AXIS));
JPanel p31 = new JPanel();
p31.add(new JLabel(Bundle.getMessage("EnterMastAttached", Bundle.getMessage("BeanNameSignalMast"))));
p3.add(p31);
JPanel p32 = new JPanel();
p32.add(new JLabel(Bundle.getMessage("MakeLabel", Bundle.getMessage("BeanNameSignalMast"))));
// comboBox to pick a main Signal Mast
p32.add(mainSignalComboBox);
p3.add(p32);
p3xsi = new JPanel();
JPanel p3xsiSpace = new JPanel();
p3xsiSpace.setLayout(new BoxLayout(p3xsiSpace, BoxLayout.Y_AXIS));
p3xsiSpace.add(new JLabel(" "));
p3xsi.add(p3xsiSpace);
JPanel p31si = new JPanel();
p31si.setLayout(new BoxLayout(p31si, BoxLayout.Y_AXIS));
p31si.add(new JLabel(Bundle.getMessage("SelectAppearanceTrigger")));
p3xsi.add(p31si);
_AspectModel = new SignalMastAspectModel();
JTable SignalMastAspectTable = new JTable(_AspectModel);
TableRowSorter<SignalMastAspectModel> smaSorter = new TableRowSorter<>(_AspectModel);
smaSorter.setComparator(SignalMastAspectModel.ASPECT_COLUMN, new SystemNameComparator());
RowSorterUtil.setSortOrder(smaSorter, SignalMastAspectModel.ASPECT_COLUMN, SortOrder.ASCENDING);
SignalMastAspectTable.setRowSorter(smaSorter);
SignalMastAspectTable.setRowSelectionAllowed(false);
SignalMastAspectTable.setPreferredScrollableViewportSize(new java.awt.Dimension(200, 80));
TableColumnModel SignalMastAspectColumnModel = SignalMastAspectTable.getColumnModel();
TableColumn includeColumnA = SignalMastAspectColumnModel.getColumn(SignalGroupTableAction.SignalMastAspectModel.INCLUDE_COLUMN);
includeColumnA.setResizable(false);
includeColumnA.setMinWidth(30);
includeColumnA.setMaxWidth(60);
@SuppressWarnings("static-access") TableColumn sNameColumnA = SignalMastAspectColumnModel.getColumn(_AspectModel.ASPECT_COLUMN);
sNameColumnA.setResizable(true);
sNameColumnA.setMinWidth(75);
sNameColumnA.setMaxWidth(140);
_SignalAppearanceScrollPane = new JScrollPane(SignalMastAspectTable);
p3xsi.add(_SignalAppearanceScrollPane, BorderLayout.CENTER);
p3.add(p3xsi);
p3xsi.setVisible(true);
// respond to comboBox selection
mainSignalComboBox.addActionListener(new ActionListener() {
//public void focusGained(FocusEvent e) {
//}
@Override
public void actionPerformed(ActionEvent event) {
if (mainSignalComboBox.getSelectedBean() == null) {
// ie. empty first row was selected or set
log.debug("Empty line in mainSignal comboBox");
//setValidSignalMastAspects(); // clears the Aspect table
} else {
if (curSignalGroup == null || mainSignalComboBox.getSelectedBean() != curSignalGroup.getSignalMast()) {
log.debug("comboBox closed, choice: {}", mainSignalComboBox.getSelectedItem());
// refresh table with signal mast aspects
setValidSignalMastAspects();
} else {
log.debug("Mast {} picked in mainSignal comboBox", mainSignalComboBox.getSelectedItem());
}
}
}
});
// complete this panel
Border p3Border = BorderFactory.createEtchedBorder();
p3.setBorder(p3Border);
contentPane.add(p3);
p2xsi = new JPanel();
JPanel p2xsiSpace = new JPanel();
p2xsiSpace.setLayout(new BoxLayout(p2xsiSpace, BoxLayout.Y_AXIS));
p2xsiSpace.add(new JLabel("XXX"));
p2xsi.add(p2xsiSpace);
JPanel p21si = new JPanel();
p21si.setLayout(new BoxLayout(p21si, BoxLayout.Y_AXIS));
p21si.add(new JLabel(Bundle.getMessage("SelectInGroup", Bundle.getMessage("SignalHeads"))));
p2xsi.add(p21si);
_SignalGroupHeadModel = new SignalGroupSignalHeadModel();
JTable SignalGroupHeadTable = new JTable(_SignalGroupHeadModel);
TableRowSorter<SignalGroupSignalHeadModel> sgsSorter = new TableRowSorter<>(_SignalGroupHeadModel);
sgsSorter.setComparator(SignalGroupSignalHeadModel.SNAME_COLUMN, new SystemNameComparator());
RowSorterUtil.setSortOrder(sgsSorter, SignalGroupSignalHeadModel.SNAME_COLUMN, SortOrder.ASCENDING);
SignalGroupHeadTable.setRowSorter(sgsSorter);
SignalGroupHeadTable.setRowSelectionAllowed(false);
SignalGroupHeadTable.setPreferredScrollableViewportSize(new java.awt.Dimension(480, 160));
TableColumnModel SignalGroupSignalColumnModel = SignalGroupHeadTable.getColumnModel();
TableColumn includeColumnSi = SignalGroupSignalColumnModel.getColumn(SignalGroupSignalHeadModel.INCLUDE_COLUMN);
includeColumnSi.setResizable(false);
includeColumnSi.setMinWidth(30);
includeColumnSi.setMaxWidth(60);
TableColumn sNameColumnSi = SignalGroupSignalColumnModel.getColumn(SignalGroupSignalHeadModel.SNAME_COLUMN);
sNameColumnSi.setResizable(true);
sNameColumnSi.setMinWidth(75);
sNameColumnSi.setMaxWidth(95);
TableColumn uNameColumnSi = SignalGroupSignalColumnModel.getColumn(SignalGroupSignalHeadModel.UNAME_COLUMN);
uNameColumnSi.setResizable(true);
uNameColumnSi.setMinWidth(100);
uNameColumnSi.setMaxWidth(260);
TableColumn stateOnColumnSi = SignalGroupSignalColumnModel.getColumn(// a 6 column table
SignalGroupSignalHeadModel.STATE_ON_COLUMN);
stateOnColumnSi.setResizable(false);
// was 50
stateOnColumnSi.setMinWidth(Bundle.getMessage("SignalHeadStateFlashingYellow").length());
stateOnColumnSi.setMaxWidth(100);
TableColumn stateOffColumnSi = SignalGroupSignalColumnModel.getColumn(SignalGroupSignalHeadModel.STATE_OFF_COLUMN);
stateOffColumnSi.setResizable(false);
stateOffColumnSi.setMinWidth(50);
stateOffColumnSi.setMaxWidth(100);
TableColumn editColumnSi = SignalGroupSignalColumnModel.getColumn(SignalGroupSignalHeadModel.EDIT_COLUMN);
editColumnSi.setResizable(false);
// was 50
editColumnSi.setMinWidth(Bundle.getMessage("ButtonEdit").length());
editColumnSi.setMaxWidth(100);
JButton editButton = new JButton(Bundle.getMessage("ButtonEdit"));
setColumnToHoldButton(SignalGroupHeadTable, SignalGroupSignalHeadModel.EDIT_COLUMN, editButton);
_SignalGroupHeadScrollPane = new JScrollPane(SignalGroupHeadTable);
p2xsi.add(_SignalGroupHeadScrollPane, BorderLayout.CENTER);
// add tooltip to explain which head types are shown
p2xsi.setToolTipText(Bundle.getMessage("SignalGroupHeadTableTooltip"));
contentPane.add(p2xsi);
p2xsi.setVisible(true);
// add notes panel, may be empty (a dot on the screen)
JPanel pa = new JPanel();
pa.setLayout(new BoxLayout(pa, BoxLayout.Y_AXIS));
Border pBorder = BorderFactory.createEtchedBorder();
pa.setBorder(pBorder);
contentPane.add(pa);
// buttons at bottom of panel
JPanel pb = new JPanel();
pb.setLayout(new FlowLayout(FlowLayout.TRAILING));
pb.add(cancelButton);
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cancelPressed(e);
}
});
cancelButton.setVisible(true);
pb.add(deleteButton);
deleteButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
deletePressed(e);
}
});
deleteButton.setToolTipText(Bundle.getMessage("DeleteSignalGroupInSystem"));
// [Update] Signal Group button in Add/Edit SignalGroup pane
pb.add(updateButton);
updateButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
updatePressed(e, false, true);
}
});
updateButton.setToolTipText(Bundle.getMessage("TooltipUpdate"));
updateButton.setVisible(true);
contentPane.add(pb);
// pack and release space
addFrame.pack();
p2xsiSpace.setVisible(false);
} else // set listener for window closing
{
mainSignalComboBox.setSelectedBean(null);
// reset title for new group
addFrame.setTitle(Bundle.getMessage("AddSignalGroup"));
}
addFrame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
// remind to save, if Signal Group was created or edited
if (SignalGroupDirty) {
InstanceManager.getDefault(jmri.UserPreferencesManager.class).showInfoMessage(Bundle.getMessage("ReminderTitle"), Bundle.getMessage("ReminderSaveString", Bundle.getMessage("SignalGroup")), "beantable.SignalGroupTableAction", // NOI18N
"remindSignalGroup");
SignalGroupDirty = false;
}
// hide first, could be gone by the time of the close event,
if (addFrame != null) {
addFrame.setVisible(false);
}
// so prevent NPE
// release editing soon, as long as NPEs occor in the following methods
inEditMode = false;
finishUpdate();
_SignalGroupHeadModel.dispose();
_AspectModel.dispose();
}
});
// display the pane
addFrame.setVisible(true);
}
use of jmri.util.JmriJFrame in project JMRI by JMRI.
the class SensorTableAction method addPressed.
@Override
protected void addPressed(ActionEvent e) {
p = jmri.InstanceManager.getDefault(jmri.UserPreferencesManager.class);
if (addFrame == null) {
addFrame = new JmriJFrame(Bundle.getMessage("TitleAddSensor"));
addFrame.addHelpMenu("package.jmri.jmrit.beantable.SensorAddEdit", true);
addFrame.getContentPane().setLayout(new BoxLayout(addFrame.getContentPane(), BoxLayout.Y_AXIS));
ActionListener okListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
okPressed(e);
}
};
ActionListener cancelListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cancelPressed(e);
}
};
ActionListener rangeListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
canAddRange(e);
}
};
if (jmri.InstanceManager.sensorManagerInstance().getClass().getName().contains("ProxySensorManager")) {
jmri.managers.ProxySensorManager proxy = (jmri.managers.ProxySensorManager) jmri.InstanceManager.sensorManagerInstance();
List<Manager> managerList = proxy.getManagerList();
for (int x = 0; x < managerList.size(); x++) {
String manuName = ConnectionNameFromSystemName.getConnectionName(managerList.get(x).getSystemPrefix());
Boolean addToPrefix = true;
//Simple test not to add a system with a duplicate System prefix
for (int i = 0; i < prefixBox.getItemCount(); i++) {
if ((prefixBox.getItemAt(i)).equals(manuName)) {
addToPrefix = false;
}
}
if (addToPrefix) {
prefixBox.addItem(manuName);
}
}
if (p.getComboBoxLastSelection(systemSelectionCombo) != null) {
prefixBox.setSelectedItem(p.getComboBoxLastSelection(systemSelectionCombo));
}
} else {
prefixBox.addItem(ConnectionNameFromSystemName.getConnectionName(jmri.InstanceManager.sensorManagerInstance().getSystemPrefix()));
}
sysName.setName("sysName");
userName.setName("userName");
prefixBox.setName("prefixBox");
addFrame.add(new AddNewHardwareDevicePanel(sysName, userName, prefixBox, numberToAdd, range, "ButtonOK", okListener, cancelListener, rangeListener));
canAddRange(null);
}
addFrame.pack();
addFrame.setVisible(true);
}
use of jmri.util.JmriJFrame in project JMRI by JMRI.
the class DispatcherFrame method allocateExtraSection.
// allocate an extra Section to an Active Train
private void allocateExtraSection(ActionEvent e) {
if (extraFrame == null) {
extraFrame = new JmriJFrame(Bundle.getMessage("ExtraTitle"));
extraFrame.addHelpMenu("package.jmri.jmrit.dispatcher.AllocateExtra", true);
extraPane = extraFrame.getContentPane();
extraPane.setLayout(new BoxLayout(extraFrame.getContentPane(), BoxLayout.Y_AXIS));
JPanel p1 = new JPanel();
p1.setLayout(new FlowLayout());
p1.add(new JLabel(Bundle.getMessage("ActiveColumnTitle") + ":"));
p1.add(atSelectBox);
atSelectBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
handleATSelectionChanged(e);
}
});
atSelectBox.setToolTipText(Bundle.getMessage("ATBoxHint"));
extraPane.add(p1);
JPanel p2 = new JPanel();
p2.setLayout(new FlowLayout());
p2.add(new JLabel(Bundle.getMessage("ExtraBoxLabel") + ":"));
p2.add(extraBox);
extraBox.setToolTipText(Bundle.getMessage("ExtraBoxHint"));
extraPane.add(p2);
JPanel p7 = new JPanel();
p7.setLayout(new FlowLayout());
JButton cancelButton = null;
p7.add(cancelButton = new JButton(Bundle.getMessage("ButtonCancel")));
cancelButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
cancelExtraRequested(e);
}
});
cancelButton.setToolTipText(Bundle.getMessage("CancelExtraHint"));
p7.add(new JLabel(" "));
JButton aExtraButton = null;
p7.add(aExtraButton = new JButton(Bundle.getMessage("AllocateButton")));
aExtraButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addExtraRequested(e);
}
});
aExtraButton.setToolTipText(Bundle.getMessage("AllocateButtonHint"));
extraPane.add(p7);
}
initializeATComboBox();
initializeExtraComboBox();
extraFrame.pack();
extraFrame.setVisible(true);
}
use of jmri.util.JmriJFrame in project JMRI by JMRI.
the class TrackSegment method editTrackSegment.
/**
* Edit a Track Segment.
*/
protected void editTrackSegment() {
if (editOpen) {
editTrackSegmentFrame.setVisible(true);
return;
}
// Initialize if needed
if (editTrackSegmentFrame == null) {
// key moved to DisplayBundle to be found by CircuitBuilder.java
editTrackSegmentFrame = new JmriJFrame(Bundle.getMessage("EditTrackSegment"), false, true);
editTrackSegmentFrame.addHelpMenu("package.jmri.jmrit.display.EditTrackSegment", true);
editTrackSegmentFrame.setLocation(50, 30);
Container contentPane = editTrackSegmentFrame.getContentPane();
contentPane.setLayout(new BoxLayout(contentPane, BoxLayout.Y_AXIS));
// add dashed choice
JPanel panel31 = new JPanel();
panel31.setLayout(new FlowLayout());
dashedBox.removeAllItems();
dashedBox.addItem(rb.getString("Solid"));
solidIndex = 0;
dashedBox.addItem(rb.getString("Dashed"));
dashedIndex = 1;
dashedBox.setToolTipText(rb.getString("DashedToolTip"));
panel31.add(new JLabel(rb.getString("Style") + " : "));
panel31.add(dashedBox);
contentPane.add(panel31);
// add mainline choice
JPanel panel32 = new JPanel();
panel32.setLayout(new FlowLayout());
mainlineBox.removeAllItems();
mainlineBox.addItem(rb.getString("Mainline"));
mainlineTrackIndex = 0;
mainlineBox.addItem(rb.getString("NotMainline"));
sideTrackIndex = 1;
mainlineBox.setToolTipText(rb.getString("MainlineToolTip"));
panel32.add(mainlineBox);
contentPane.add(panel32);
// add hidden choice
JPanel panel33 = new JPanel();
panel33.setLayout(new FlowLayout());
hiddenBox.setToolTipText(rb.getString("HiddenToolTip"));
panel33.add(hiddenBox);
contentPane.add(panel33);
// setup block name
JPanel panel2 = new JPanel();
panel2.setLayout(new FlowLayout());
JLabel blockNameLabel = new JLabel(rb.getString("BlockID"));
panel2.add(blockNameLabel);
layoutEditor.setupComboBox(blockNameComboBox, false, true);
blockNameComboBox.setToolTipText(rb.getString("EditBlockNameHint"));
panel2.add(blockNameComboBox);
contentPane.add(panel2);
if (getArc() && circle) {
JPanel panel20 = new JPanel();
panel20.setLayout(new FlowLayout());
JLabel arcLabel = new JLabel("Set Arc Angle");
panel20.add(arcLabel);
panel20.add(arcField);
arcField.setToolTipText("Set Arc Angle");
contentPane.add(panel20);
arcField.setText("" + getAngle());
}
// set up Edit Block, Done and Cancel buttons
JPanel panel5 = new JPanel();
panel5.setLayout(new FlowLayout());
// Edit Block
panel5.add(segmentEditBlock = new JButton(Bundle.getMessage("EditBlock", "")));
segmentEditBlock.addActionListener((ActionEvent e) -> {
segmentEditBlockPressed(e);
});
// empty value for block 1
segmentEditBlock.setToolTipText(Bundle.getMessage("EditBlockHint", ""));
panel5.add(segmentEditDone = new JButton(Bundle.getMessage("ButtonDone")));
segmentEditDone.addActionListener((ActionEvent e) -> {
segmentEditDonePressed(e);
});
segmentEditDone.setToolTipText(Bundle.getMessage("DoneHint", Bundle.getMessage("ButtonDone")));
// make this button the default button (return or enter activates)
// Note: We have to invoke this later because we don't currently have a root pane
SwingUtilities.invokeLater(() -> {
JRootPane rootPane = SwingUtilities.getRootPane(segmentEditDone);
rootPane.setDefaultButton(segmentEditDone);
});
// Cancel
panel5.add(segmentEditCancel = new JButton(Bundle.getMessage("ButtonCancel")));
segmentEditCancel.addActionListener((ActionEvent e) -> {
segmentEditCancelPressed(e);
});
segmentEditCancel.setToolTipText(Bundle.getMessage("CancelHint", Bundle.getMessage("ButtonCancel")));
contentPane.add(panel5);
}
// Set up for Edit
if (mainline) {
mainlineBox.setSelectedIndex(mainlineTrackIndex);
} else {
mainlineBox.setSelectedIndex(sideTrackIndex);
}
if (dashed) {
dashedBox.setSelectedIndex(dashedIndex);
} else {
dashedBox.setSelectedIndex(solidIndex);
}
hiddenBox.setSelected(hidden);
blockNameComboBox.getEditor().setItem(blockName);
editTrackSegmentFrame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
segmentEditCancelPressed(null);
}
});
editTrackSegmentFrame.pack();
editTrackSegmentFrame.setVisible(true);
editOpen = true;
}
use of jmri.util.JmriJFrame in project JMRI by JMRI.
the class PanelEditor method makeFrame.
/**
* Create sequence of panels, etc, for layout: JFrame contains its
* ContentPane which contains a JPanel with BoxLayout (p1) which contains a
* JScollPane (js) which contains the targetPane
*
*/
public JmriJFrame makeFrame(String name) {
JmriJFrame targetFrame = new JmriJFrame(name);
targetFrame.setVisible(false);
JMenuBar menuBar = new JMenuBar();
JMenu editMenu = new JMenu(Bundle.getMessage("MenuEdit"));
menuBar.add(editMenu);
editMenu.add(new AbstractAction(Bundle.getMessage("OpenEditor")) {
@Override
public void actionPerformed(ActionEvent e) {
setVisible(true);
}
});
editMenu.addSeparator();
editMenu.add(new AbstractAction(Bundle.getMessage("DeletePanel")) {
@Override
public void actionPerformed(ActionEvent e) {
if (deletePanel()) {
dispose(true);
}
}
});
targetFrame.setJMenuBar(menuBar);
// add maker menu
JMenu markerMenu = new JMenu(Bundle.getMessage("MenuMarker"));
menuBar.add(markerMenu);
markerMenu.add(new AbstractAction(Bundle.getMessage("AddLoco")) {
@Override
public void actionPerformed(ActionEvent e) {
locoMarkerFromInput();
}
});
markerMenu.add(new AbstractAction(Bundle.getMessage("AddLocoRoster")) {
@Override
public void actionPerformed(ActionEvent e) {
locoMarkerFromRoster();
}
});
markerMenu.add(new AbstractAction(Bundle.getMessage("RemoveMarkers")) {
@Override
public void actionPerformed(ActionEvent e) {
removeMarkers();
}
});
JMenu warrantMenu = jmri.jmrit.logix.WarrantTableAction.makeWarrantMenu(isEditable());
if (warrantMenu != null) {
menuBar.add(warrantMenu);
}
targetFrame.addHelpMenu("package.jmri.jmrit.display.PanelTarget", true);
return targetFrame;
}
Aggregations