Search in sources :

Example 11 with JmriJFrame

use of jmri.util.JmriJFrame in project JMRI by JMRI.

the class SignalMastLogicTableAction method autoCreatePairs.

void autoCreatePairs(jmri.util.JmriJFrame f) {
    if (!InstanceManager.getDefault(LayoutBlockManager.class).isAdvancedRoutingEnabled()) {
        int response = JOptionPane.showConfirmDialog(null, Bundle.getMessage("EnableLayoutBlockRouting"));
        if (response == 0) {
            InstanceManager.getDefault(LayoutBlockManager.class).enableAdvancedRouting(true);
            JOptionPane.showMessageDialog(null, Bundle.getMessage("LayoutBlockRoutingEnabled"));
        } else {
            return;
        }
    }
    signalMastLogicFrame = new JmriJFrame(Bundle.getMessage("DiscoverSignalMastPairs"), false, false);
    signalMastLogicFrame.setPreferredSize(null);
    JPanel panel1 = new JPanel();
    sourceLabel = new JLabel(Bundle.getMessage("DiscoveringSignalMastPairs"));
    panel1.add(sourceLabel);
    signalMastLogicFrame.add(panel1);
    signalMastLogicFrame.pack();
    signalMastLogicFrame.setVisible(true);
    final JCheckBox genSect = new JCheckBox(Bundle.getMessage("AutoGenSectionAfterLogic"));
    genSect.setToolTipText(Bundle.getMessage("AutoGenSectionAfterLogicToolTip"));
    Object[] params = { Bundle.getMessage("AutoGenSignalMastLogicMessage"), " ", genSect };
    int retval = JOptionPane.showConfirmDialog(f, params, Bundle.getMessage("AutoGenSignalMastLogicTitle"), JOptionPane.YES_NO_OPTION);
    if (retval == 0) {
        InstanceManager.getDefault(jmri.SignalMastLogicManager.class).addPropertyChangeListener(propertyGenerateListener);
        // This process can take some time, so we do split it off then return to Swing/AWT
        Runnable r = new Runnable() {

            @Override
            public void run() {
                //While the global discovery is taking place we remove the listener as this can result in a race condition.
                suppressUpdate = true;
                try {
                    InstanceManager.getDefault(jmri.SignalMastLogicManager.class).automaticallyDiscoverSignallingPairs();
                } catch (jmri.JmriException e) {
                    // Notify of problem
                    try {
                        javax.swing.SwingUtilities.invokeAndWait(() -> {
                            InstanceManager.getDefault(jmri.SignalMastLogicManager.class).removePropertyChangeListener(propertyGenerateListener);
                            JOptionPane.showMessageDialog(null, e.toString());
                            signalMastLogicFrame.setVisible(false);
                        });
                    } catch (java.lang.reflect.InvocationTargetException ex) {
                        log.error("failed to notify of problem with automaticallyDiscoverSignallingPairs", ex);
                    } catch (InterruptedException ex) {
                        log.error("interrupted while notifying of problem with automaticallyDiscoverSignallingPairs", ex);
                    }
                }
                // process complete, update GUI
                try {
                    javax.swing.SwingUtilities.invokeAndWait(() -> {
                        m.updateNameList();
                        suppressUpdate = false;
                        m.fireTableDataChanged();
                        if (genSect.isSelected()) {
                            ((jmri.managers.DefaultSignalMastLogicManager) InstanceManager.getDefault(jmri.SignalMastLogicManager.class)).generateSection();
                        }
                    });
                } catch (java.lang.reflect.InvocationTargetException ex) {
                    log.error("failed to update at end of automaticallyDiscoverSignallingPairs", ex);
                } catch (InterruptedException ex) {
                    log.error("interrupted during update at end of automaticallyDiscoverSignallingPairs", ex);
                }
            }
        };
        // NOI18N
        Thread thr = new Thread(r, "Discover Signal Mast Logic");
        thr.start();
    } else {
        signalMastLogicFrame.setVisible(false);
    }
}
Also used : JPanel(javax.swing.JPanel) JLabel(javax.swing.JLabel) JCheckBox(javax.swing.JCheckBox) JmriJFrame(jmri.util.JmriJFrame) SignalMastLogicManager(jmri.SignalMastLogicManager) LayoutBlockManager(jmri.jmrit.display.layoutEditor.LayoutBlockManager)

Example 12 with JmriJFrame

use of jmri.util.JmriJFrame in project JMRI by JMRI.

the class InputWindowAction method actionPerformed.

/**
     * Invoking this action via an event triggers display of a file dialog. If a
     * file is selected, it's then invoked as a script.
     *
     */
@Override
public void actionPerformed(ActionEvent e) {
    f = new JmriJFrame(Bundle.getMessage("TitleInputFrame"));
    f.getContentPane().setLayout(new BoxLayout(f.getContentPane(), javax.swing.BoxLayout.Y_AXIS));
    f.getContentPane().add(new InputWindow());
    f.pack();
    f.setVisible(true);
}
Also used : JmriJFrame(jmri.util.JmriJFrame) BoxLayout(javax.swing.BoxLayout)

Example 13 with JmriJFrame

use of jmri.util.JmriJFrame in project JMRI by JMRI.

the class PaneEditAction method actionPerformed.

@Override
public void actionPerformed(ActionEvent e) {
    if (log.isDebugEnabled()) {
        log.debug("Pane programmer requested");
    }
    // create the initial frame that steers
    final JmriJFrame f = new JmriJFrame(SymbolicProgBundle.getMessage("FrameEditEntrySetup"));
    f.getContentPane().setLayout(new BoxLayout(f.getContentPane(), BoxLayout.Y_AXIS));
    // add the Roster menu
    JMenuBar menuBar = new JMenuBar();
    // menuBar.setBorder(new BevelBorder(BevelBorder.RAISED));
    menuBar.add(new jmri.jmrit.roster.swing.RosterMenu(SymbolicProgBundle.getMessage("MenuRoster"), jmri.jmrit.roster.swing.RosterMenu.MAINMENU, f));
    f.setJMenuBar(menuBar);
    // known entry, no programmer
    JPanel pane1 = new // not programming
    KnownLocoSelPane(// not programming
    false) {

        @Override
        protected void startProgrammer(DecoderFile decoderFile, RosterEntry re, String filename) {
            String title = SymbolicProgBundle.getMessage("FrameEditEntryTitle");
            JFrame p = new PaneProgFrame(decoderFile, re, title, "programmers" + File.separator + filename + ".xml", null, false) {

                @Override
                protected JPanel getModePane() {
                    return null;
                }
            };
            p.pack();
            p.setVisible(true);
        }
    };
    // load primary frame
    pane1.setAlignmentX(JLabel.CENTER_ALIGNMENT);
    f.getContentPane().add(pane1);
    f.pack();
    if (log.isDebugEnabled()) {
        log.debug("Tab-Programmer setup created");
    }
    f.setVisible(true);
}
Also used : JPanel(javax.swing.JPanel) DecoderFile(jmri.jmrit.decoderdefn.DecoderFile) BoxLayout(javax.swing.BoxLayout) KnownLocoSelPane(jmri.jmrit.symbolicprog.KnownLocoSelPane) JmriJFrame(jmri.util.JmriJFrame) JmriJFrame(jmri.util.JmriJFrame) JFrame(javax.swing.JFrame) RosterEntry(jmri.jmrit.roster.RosterEntry) JMenuBar(javax.swing.JMenuBar)

Example 14 with JmriJFrame

use of jmri.util.JmriJFrame in project JMRI by JMRI.

the class ClientActions method openCdiWindow.

public void openCdiWindow(NodeID destNode, String description) {
    final java.util.ArrayList<JButton> readList = new java.util.ArrayList<JButton>();
    final java.util.ArrayList<JButton> sensorButtonList = new java.util.ArrayList<JButton>();
    final java.util.ArrayList<JButton> turnoutButtonList = new java.util.ArrayList<JButton>();
    JmriJFrame f = new JmriJFrame();
    f.setTitle(Bundle.getMessage("CdiPanelConfigure", description));
    f.setLayout(new javax.swing.BoxLayout(f.getContentPane(), javax.swing.BoxLayout.Y_AXIS));
    CdiPanel m = new CdiPanel();
    f.add(m);
    m.setEventTable(iface.getNodeStore().getSimpleNodeIdent(destNode).getUserName(), iface.getEventTable());
    // create an object to add "New Sensor" buttons
    CdiPanel.GuiItemFactory factory = new CdiPanel.GuiItemFactory() {

        private boolean haveButtons = false;

        @Override
        public JButton handleReadButton(JButton button) {
            readList.add(button);
            return button;
        }

        @Override
        public JButton handleWriteButton(JButton button) {
            return button;
        }

        @Override
        public void handleGroupPaneStart(JPanel pane) {
            this.gpane = pane;
            evt1 = null;
            evt2 = null;
            desc = null;
            return;
        }

        @Override
        public void handleGroupPaneEnd(JPanel pane) {
            if (gpane != null && evt1 != null && evt2 != null && desc != null) {
                JPanel p = new JPanel();
                p.setLayout(new FlowLayout());
                p.setAlignmentX(-1.0f);
                pane.add(p);
                JButton button = new JButton(Bundle.getMessage("CdiPanelMakeSensor"));
                p.add(button);
                sensorButtonList.add(button);
                button.addActionListener(new java.awt.event.ActionListener() {

                    @Override
                    public void actionPerformed(java.awt.event.ActionEvent e) {
                        jmri.Sensor sensor = jmri.InstanceManager.sensorManagerInstance().provideSensor("MS" + mevt1.getText() + ";" + mevt2.getText());
                        if (mdesc.getText().length() > 0) {
                            sensor.setUserName(mdesc.getText());
                        }
                        log.info("make sensor MS" + mevt1.getText() + ";" + mevt2.getText() + " [" + mdesc.getText() + "]");
                    }

                    JTextField mdesc = desc;

                    JFormattedTextField mevt1 = evt1;

                    JFormattedTextField mevt2 = evt2;
                });
                button = new JButton(Bundle.getMessage("CdiPanelMakeTurnout"));
                p.add(button);
                turnoutButtonList.add(button);
                button.addActionListener(new java.awt.event.ActionListener() {

                    @Override
                    public void actionPerformed(java.awt.event.ActionEvent e) {
                        jmri.Turnout turnout = jmri.InstanceManager.turnoutManagerInstance().provideTurnout("MT" + mevt1.getText() + ";" + mevt2.getText());
                        if (mdesc.getText().length() > 0) {
                            turnout.setUserName(mdesc.getText());
                        }
                        log.info("make turnout MT" + mevt1.getText() + ";" + mevt2.getText() + " [" + mdesc.getText() + "]");
                    }

                    JTextField mdesc = desc;

                    JFormattedTextField mevt1 = evt1;

                    JFormattedTextField mevt2 = evt2;
                });
                if (!haveButtons) {
                    haveButtons = true;
                    m.addButtonToFooter(buttonForList(sensorButtonList, Bundle.getMessage("CdiPanelMakeAllSensors")));
                    m.addButtonToFooter(buttonForList(turnoutButtonList, Bundle.getMessage("CdiPanelMakeAllTurnouts")));
                }
                gpane = null;
                evt1 = null;
                evt2 = null;
                desc = null;
            }
            return;
        }

        @Override
        public JFormattedTextField handleEventIdTextField(JFormattedTextField field) {
            if (evt1 == null) {
                evt1 = field;
            } else if (evt2 == null) {
                evt2 = field;
            } else {
                // flag too many
                gpane = null;
            }
            return field;
        }

        @Override
        public JTextField handleStringValue(JTextField value) {
            desc = value;
            return value;
        }

        JPanel gpane = null;

        JTextField desc = null;

        JFormattedTextField evt1 = null;

        JFormattedTextField evt2 = null;
    };
    ConfigRepresentation rep = iface.getConfigForNode(destNode);
    m.initComponents(rep, factory);
    f.pack();
    f.setVisible(true);
}
Also used : JPanel(javax.swing.JPanel) CdiPanel(org.openlcb.cdi.swing.CdiPanel) FlowLayout(java.awt.FlowLayout) ActionListener(java.awt.event.ActionListener) JButton(javax.swing.JButton) JFormattedTextField(javax.swing.JFormattedTextField) JTextField(javax.swing.JTextField) ActionEvent(java.awt.event.ActionEvent) ConfigRepresentation(org.openlcb.cdi.impl.ConfigRepresentation) JmriJFrame(jmri.util.JmriJFrame)

Example 15 with JmriJFrame

use of jmri.util.JmriJFrame in project JMRI by JMRI.

the class CheckForUpdateAction method actionPerformed.

@Override
public void actionPerformed(ActionEvent ev) {
    final JFrame frame = new JmriJFrame(Bundle.getMessage("TitleUpdate"), false, false);
    frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.Y_AXIS));
    JTextArea text = new JTextArea();
    text.setEditable(false);
    frame.add(text);
    String productionrelease = "";
    String testrelease = "";
    InputStream in = null;
    try {
        String urlname = "http://jmri.org/releaselist";
        URL url = new URL(urlname);
        in = url.openConnection().getInputStream();
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        // search for releases
        String line;
        while ((line = reader.readLine()) != null) {
            if (line.startsWith("production")) {
                productionrelease = getNumber(reader);
            }
            if (line.startsWith("test")) {
                testrelease = getNumber(reader);
            }
        }
    } catch (java.net.MalformedURLException e) {
        log.error("Unexpected failure in URL parsing", e);
        return;
    } catch (FileNotFoundException e) {
        log.debug("Unable to get version info from web" + e);
    } catch (IOException e) {
        log.debug("Unexpected failure during reading" + e);
    } finally {
        try {
            if (in != null) {
                in.close();
            }
        } catch (IOException e1) {
            log.error("Exception closing input stream", e1);
        }
    }
    // add content here!
    text.append("Most recent production release: " + productionrelease + "\n");
    text.append("Most recent test release: " + testrelease + "\n");
    // cleaner form is getCanonicalVersion()
    text.append("You have: " + jmri.Version.name() + "\n");
    JPanel p = new JPanel();
    p.setLayout(new FlowLayout());
    JButton go = new JButton(Bundle.getMessage("ButtonDownloadPage"));
    go.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent event) {
            try {
                Desktop.getDesktop().browse(new URI("http://jmri.org/download"));
            } catch (java.net.URISyntaxException e) {
                log.error("Invalid page requested", e);
            } catch (java.io.IOException e) {
                log.error("Could no load page", e);
            }
        }
    });
    p.add(go);
    JButton close = new JButton(Bundle.getMessage("ButtonClose"));
    close.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent event) {
            frame.setVisible(false);
            frame.dispose();
        }
    });
    p.add(close);
    frame.add(p);
    frame.pack();
    // show
    frame.setVisible(true);
}
Also used : JPanel(javax.swing.JPanel) JTextArea(javax.swing.JTextArea) FlowLayout(java.awt.FlowLayout) InputStreamReader(java.io.InputStreamReader) InputStream(java.io.InputStream) ActionEvent(java.awt.event.ActionEvent) BoxLayout(javax.swing.BoxLayout) FileNotFoundException(java.io.FileNotFoundException) JButton(javax.swing.JButton) IOException(java.io.IOException) URI(java.net.URI) URL(java.net.URL) ActionListener(java.awt.event.ActionListener) JmriJFrame(jmri.util.JmriJFrame) JFrame(javax.swing.JFrame) JmriJFrame(jmri.util.JmriJFrame) BufferedReader(java.io.BufferedReader)

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