Search in sources :

Example 51 with JmriJFrame

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);
}
Also used : JPanel(javax.swing.JPanel) FlowLayout(java.awt.FlowLayout) JRadioButton(javax.swing.JRadioButton) ActionEvent(java.awt.event.ActionEvent) BoxLayout(javax.swing.BoxLayout) JButton(javax.swing.JButton) SignalHead(jmri.SignalHead) TableColumnModel(javax.swing.table.TableColumnModel) JmriBeanComboBox(jmri.util.swing.JmriBeanComboBox) Container(java.awt.Container) TableRowSorter(javax.swing.table.TableRowSorter) JScrollPane(javax.swing.JScrollPane) JLabel(javax.swing.JLabel) TableColumn(javax.swing.table.TableColumn) ActionListener(java.awt.event.ActionListener) JmriJFrame(jmri.util.JmriJFrame) ButtonGroup(javax.swing.ButtonGroup) JTable(javax.swing.JTable) SystemNameComparator(jmri.util.SystemNameComparator) Border(javax.swing.border.Border)

Example 52 with JmriJFrame

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);
}
Also used : ActionEvent(java.awt.event.ActionEvent) BoxLayout(javax.swing.BoxLayout) SensorManager(jmri.SensorManager) Manager(jmri.Manager) ActionListener(java.awt.event.ActionListener) JmriJFrame(jmri.util.JmriJFrame)

Example 53 with JmriJFrame

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);
}
Also used : JPanel(javax.swing.JPanel) FlowLayout(java.awt.FlowLayout) ActionListener(java.awt.event.ActionListener) JmriJFrame(jmri.util.JmriJFrame) ActionEvent(java.awt.event.ActionEvent) BoxLayout(javax.swing.BoxLayout) JButton(javax.swing.JButton) JLabel(javax.swing.JLabel)

Example 54 with JmriJFrame

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;
}
Also used : JPanel(javax.swing.JPanel) FlowLayout(java.awt.FlowLayout) ActionEvent(java.awt.event.ActionEvent) BoxLayout(javax.swing.BoxLayout) JButton(javax.swing.JButton) JLabel(javax.swing.JLabel) Container(java.awt.Container) JmriJFrame(jmri.util.JmriJFrame) JRootPane(javax.swing.JRootPane)

Example 55 with JmriJFrame

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;
}
Also used : JmriJFrame(jmri.util.JmriJFrame) ActionEvent(java.awt.event.ActionEvent) AbstractAction(javax.swing.AbstractAction) JMenuBar(javax.swing.JMenuBar) JMenu(javax.swing.JMenu)

Aggregations

JmriJFrame (jmri.util.JmriJFrame)111 ActionEvent (java.awt.event.ActionEvent)46 BoxLayout (javax.swing.BoxLayout)44 JPanel (javax.swing.JPanel)44 JButton (javax.swing.JButton)38 ActionListener (java.awt.event.ActionListener)33 FlowLayout (java.awt.FlowLayout)30 JLabel (javax.swing.JLabel)30 Test (org.junit.Test)22 Container (java.awt.Container)20 JScrollPane (javax.swing.JScrollPane)20 JFrame (javax.swing.JFrame)16 JSeparator (javax.swing.JSeparator)10 JTable (javax.swing.JTable)10 JComboBox (javax.swing.JComboBox)9 TableColumn (javax.swing.table.TableColumn)9 TableColumnModel (javax.swing.table.TableColumnModel)9 ButtonGroup (javax.swing.ButtonGroup)8 JCheckBox (javax.swing.JCheckBox)8 JMenuBar (javax.swing.JMenuBar)8