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);
}
}
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);
}
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);
}
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);
}
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);
}
Aggregations