use of java.awt.CardLayout in project JMRI by JMRI.
the class ListedTableFrame method initComponents.
@Override
public void initComponents() {
actionList = new ActionJList(this);
detailpanel = new JPanel();
detailpanel.setLayout(new CardLayout());
tabbedTableArray = new ArrayList<TabbedTableItem>(TabbedTableItemListArrayArray.size());
ArrayList<TabbedTableItemListArray> removeItem = new ArrayList<TabbedTableItemListArray>(5);
for (int x = 0; x < TabbedTableItemListArrayArray.size(); x++) {
/* Here we add all the tables into the panel*/
TabbedTableItemListArray item = TabbedTableItemListArrayArray.get(x);
try {
TabbedTableItem itemModel = new TabbedTableItem(item.getClassAsString(), item.getItemString(), item.getStandardTableModel());
itemBeingAdded = itemModel;
detailpanel.add(itemModel.getPanel(), itemModel.getClassAsString());
tabbedTableArray.add(itemModel);
itemBeingAdded.getAAClass().addToFrame(this);
} catch (Exception ex) {
detailpanel.add(errorPanel(item.getItemString()), item.getClassAsString());
log.error("Error when adding " + item.getClassAsString() + " to display\n" + ex);
ex.printStackTrace();
removeItem.add(item);
}
}
for (TabbedTableItemListArray dead : removeItem) {
TabbedTableItemListArrayArray.remove(dead);
}
list = new JList<String>(new Vector<String>(getChoices()));
listScroller = new JScrollPane(list);
list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
list.setLayoutOrientation(JList.VERTICAL);
list.addMouseListener(actionList);
buttonpanel = new JPanel();
buttonpanel.setLayout(new BorderLayout(5, 0));
buttonpanel.setLayout(new BoxLayout(buttonpanel, BoxLayout.Y_AXIS));
buttonpanel.add(listScroller);
buildMenus(tabbedTableArray.get(0));
setTitle(tabbedTableArray.get(0).getItemString());
cardHolder = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, buttonpanel, detailpanel);
cardHolder.setDividerSize(8);
if (lastdivider != 0) {
cardHolder.setDividerLocation(lastdivider);
} else {
// if no specific size has been given we set it to the lists preferred width
cardHolder.setDividerLocation(listScroller.getPreferredSize().width);
}
cardHolder.addPropertyChangeListener(new PropertyChangeListener() {
@SuppressFBWarnings(value = "ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD", justification = "We only intend to use/save the last position of the Split frame")
@Override
public void propertyChange(PropertyChangeEvent e) {
if (e.getPropertyName().equals("dividerLocation")) {
lastdivider = (Integer) e.getNewValue();
}
}
});
cardHolder.setOneTouchExpandable(true);
getContentPane().add(cardHolder);
pack();
actionList.selectListItem(0);
}
use of java.awt.CardLayout in project JMRI by JMRI.
the class SpeedoConsoleFrame method initComponents.
// FIXME: Why does the if statement in this method include a direct false?
@SuppressWarnings("unused")
@Override
public void initComponents() throws Exception {
setTitle(title());
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
// What services do we have?
dccServices = BASIC;
if (InstanceManager.getNullableDefault(jmri.ProgrammerManager.class) != null && InstanceManager.getDefault(jmri.ProgrammerManager.class).isGlobalProgrammerAvailable()) {
prog = InstanceManager.getDefault(jmri.ProgrammerManager.class).getGlobalProgrammer();
dccServices |= PROG;
}
if (InstanceManager.getNullableDefault(jmri.ThrottleManager.class) != null) {
// otherwise we'll send speed commands
log.info("Using Throttle interface for profiling");
dccServices |= THROTTLE;
}
if (InstanceManager.getNullableDefault(jmri.PowerManager.class) != null) {
pm = InstanceManager.getDefault(jmri.PowerManager.class);
pm.addPropertyChangeListener(this);
}
/*
* Setup pane for basic operations
*/
JPanel basicPane = new JPanel();
basicPane.setLayout(new BoxLayout(basicPane, BoxLayout.Y_AXIS));
// Scale panel to hold the scale selector
JPanel scalePanel = new JPanel();
scalePanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), rb.getString("SelectScale")));
scalePanel.setLayout(new FlowLayout());
scaleList.setToolTipText("Select the scale");
scaleList.setSelectedIndex(defaultScale);
selectedScale = scales[defaultScale];
// Listen to selection of scale
scaleList.addActionListener(new java.awt.event.ActionListener() {
// action semantics pass an Object that must be a JComboBox<String>
@SuppressWarnings("unchecked")
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
JComboBox<String> cb = (JComboBox<String>) e.getSource();
selectedScale = scales[cb.getSelectedIndex()];
// *** check if -1 and enable text entry box
}
});
scaleLabel.setText(rb.getString("Scale"));
scaleLabel.setVisible(true);
readerLabel.setText(rb.getString("UnknownReader"));
readerLabel.setVisible(true);
scalePanel.add(scaleLabel);
scalePanel.add(scaleList);
scalePanel.add(readerLabel);
basicPane.add(scalePanel);
// Mode panel for selection of profile mode
JPanel modePanel = new JPanel();
modePanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), rb.getString("SelectMode")));
modePanel.setLayout(new FlowLayout());
// Buttons to select the mode
modeGroup.add(progButton);
modeGroup.add(mainButton);
progButton.setSelected(true);
progButton.setToolTipText(rb.getString("TTProg"));
mainButton.setToolTipText(rb.getString("TTMain"));
modePanel.add(progButton);
modePanel.add(mainButton);
// Listen to change of profile mode
progButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
if (((dccServices & PROG) == PROG)) {
// Programmer is available to read back CVs
readAddressButton.setEnabled(true);
statusLabel.setText(rb.getString("StatProg"));
}
}
});
mainButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
// no programmer available to read back CVs
readAddressButton.setEnabled(false);
statusLabel.setText(rb.getString("StatMain"));
}
});
basicPane.add(modePanel);
// Speed panel for the dial or digital speed display
JPanel speedPanel = new JPanel();
speedPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), rb.getString("MeasuredSpeed")));
speedPanel.setLayout(new BoxLayout(speedPanel, BoxLayout.X_AXIS));
// Display Panel which is a card layout with cards to show
// numeric or dial type speed display
final JPanel displayCards = new JPanel();
displayCards.setLayout(new CardLayout());
// Numeric speed card
JPanel numericSpeedPanel = new JPanel();
numericSpeedPanel.setLayout(new BoxLayout(numericSpeedPanel, BoxLayout.X_AXIS));
Font f = new Font("", Font.PLAIN, 96);
speedTextField.setFont(f);
speedTextField.setHorizontalAlignment(JTextField.RIGHT);
speedTextField.setColumns(3);
speedTextField.setText("0.0");
speedTextField.setVisible(true);
speedTextField.setToolTipText(rb.getString("SpeedHere"));
numericSpeedPanel.add(speedTextField);
// Dial speed card
JPanel dialSpeedPanel = new JPanel();
dialSpeedPanel.setLayout(new BoxLayout(dialSpeedPanel, BoxLayout.X_AXIS));
dialSpeedPanel.add(speedoDialDisplay);
speedoDialDisplay.update(0.0F);
// Add cards to panel
displayCards.add(dialSpeedPanel, "DIAL");
displayCards.add(numericSpeedPanel, "NUMERIC");
CardLayout cl = (CardLayout) displayCards.getLayout();
cl.show(displayCards, "DIAL");
// button panel
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.Y_AXIS));
speedGroup.add(mphButton);
speedGroup.add(kphButton);
mphButton.setSelected(true);
mphButton.setToolTipText(rb.getString("TTDisplayMPH"));
kphButton.setToolTipText(rb.getString("TTDisplayKPH"));
displayGroup.add(numButton);
displayGroup.add(dialButton);
dialButton.setSelected(true);
numButton.setToolTipText(rb.getString("TTDisplayNumeric"));
dialButton.setToolTipText(rb.getString("TTDisplayDial"));
buttonPanel.add(mphButton);
buttonPanel.add(kphButton);
buttonPanel.add(numButton);
buttonPanel.add(dialButton);
speedPanel.add(displayCards);
speedPanel.add(buttonPanel);
// Listen to change of units, convert current average and update display
mphButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
profileGraphPane.setUnitsMph();
profileGraphPane.repaint();
speedoDialDisplay.setUnitsMph();
speedoDialDisplay.update(currentSpeed);
speedoDialDisplay.repaint();
}
});
kphButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
profileGraphPane.setUnitsKph();
profileGraphPane.repaint();
speedoDialDisplay.setUnitsKph();
speedoDialDisplay.update(currentSpeed);
speedoDialDisplay.repaint();
}
});
// Listen to change of display
numButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
display = DisplayType.NUMERIC;
CardLayout cl = (CardLayout) displayCards.getLayout();
cl.show(displayCards, "NUMERIC");
}
});
dialButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
display = DisplayType.DIAL;
CardLayout cl = (CardLayout) displayCards.getLayout();
cl.show(displayCards, "DIAL");
}
});
basicPane.add(speedPanel);
/*
* Pane for profiling loco speed curve
*/
JPanel profilePane = new JPanel();
profilePane.setLayout(new BorderLayout());
JPanel addrPane = new JPanel();
GridBagLayout gLayout = new GridBagLayout();
GridBagConstraints gConstraints = new GridBagConstraints();
gConstraints.insets = new Insets(3, 3, 3, 3);
Border addrPaneBorder = javax.swing.BorderFactory.createEtchedBorder();
TitledBorder addrPaneTitle = javax.swing.BorderFactory.createTitledBorder(addrPaneBorder, rb.getString("LocoSelection"));
addrPane.setLayout(gLayout);
addrPane.setBorder(addrPaneTitle);
setButton = new JButton(rb.getString("ButtonSet"));
setButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
changeOfAddress();
}
});
addrSelector.setAddress(null);
rosterBox = new GlobalRosterEntryComboBox();
rosterBox.setNonSelectedItem(rb.getString("NoLocoSelected"));
rosterBox.setToolTipText(rb.getString("TTSelectLocoFromRoster"));
/*
Using an ActionListener didn't select a loco from the ComboBox properly
so changed it to a PropertyChangeListener approach modeled on the code
in CombinedLocoSelPane class, layoutRosterSelection method, which is known to work.
Not sure why the ActionListener didn't work properly, but this fixes the bug
*/
rosterBox.addPropertyChangeListener(RosterEntrySelector.SELECTED_ROSTER_ENTRIES, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent pce) {
if (!disableRosterBoxActions) {
//Have roster box actions been disabled?
rosterItemSelected();
}
}
});
readAddressButton.setToolTipText(rb.getString("ReadLoco"));
addrPane.add(addrSelector.getCombinedJPanel(), gConstraints);
addrPane.add(new JLabel(" "), gConstraints);
addrPane.add(setButton, gConstraints);
addrPane.add(new JLabel(" "), gConstraints);
addrPane.add(rosterBox, gConstraints);
addrPane.add(new JLabel(" "), gConstraints);
addrPane.add(readAddressButton, gConstraints);
if (((dccServices & PROG) != PROG) || (mainButton.isSelected())) {
// No programming facility so user must enter address
addrSelector.setEnabled(false);
readAddressButton.setEnabled(false);
} else {
addrSelector.setEnabled(true);
readAddressButton.setEnabled(true);
}
// Listen to read button
readAddressButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
readAddress();
}
});
profilePane.add(addrPane, BorderLayout.NORTH);
// pane to hold the graph
// 28 step plus step 0
spFwd = new DccSpeedProfile(29);
// 28 step plus step 0
spRev = new DccSpeedProfile(29);
// 28 step plus step 0
spRef = new DccSpeedProfile(29);
profileGraphPane = new GraphPane(spFwd, spRev, spRef);
profileGraphPane.setPreferredSize(new Dimension(600, 300));
profileGraphPane.setXLabel(rb.getString("SpeedStep"));
profileGraphPane.setUnitsMph();
profilePane.add(profileGraphPane, BorderLayout.CENTER);
// pane to hold the buttons
JPanel profileButtonPane = new JPanel();
profileButtonPane.setLayout(new FlowLayout());
profileButtonPane.add(trackPowerButton);
trackPowerButton.setToolTipText(rb.getString("TTPower"));
profileButtonPane.add(startProfileButton);
startProfileButton.setToolTipText(rb.getString("TTStartProfile"));
profileButtonPane.add(stopProfileButton);
stopProfileButton.setToolTipText(rb.getString("TTStopProfile"));
profileButtonPane.add(exportProfileButton);
exportProfileButton.setToolTipText(rb.getString("TTSaveProfile"));
profileButtonPane.add(printProfileButton);
printProfileButton.setToolTipText(rb.getString("TTPrintProfile"));
profileButtonPane.add(resetGraphButton);
resetGraphButton.setToolTipText(rb.getString("TTResetGraph"));
profileButtonPane.add(loadProfileButton);
loadProfileButton.setToolTipText(rb.getString("TTLoadProfile"));
// pane to hold the title
JPanel profileTitlePane = new JPanel();
profileTitlePane.setLayout(new BoxLayout(profileTitlePane, BoxLayout.X_AXIS));
// JTextArea profileTitle = new JTextArea("Title: ");
// profileTitlePane.add(profileTitle);
printTitleText.setToolTipText(rb.getString("TTPrintTitle"));
printTitleText.setText("Bachrus MTS-DCC profile for loco <unknown>");
profileTitlePane.add(printTitleText);
// pane to wrap buttons and title
JPanel profileSouthPane = new JPanel();
profileSouthPane.setLayout(new BoxLayout(profileSouthPane, BoxLayout.Y_AXIS));
profileSouthPane.add(profileButtonPane);
profileSouthPane.add(profileTitlePane);
// Listen to track Power button
trackPowerButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
trackPower();
}
});
// Listen to start button
startProfileButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
startProfile();
}
});
// Listen to stop button
stopProfileButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
stopProfile();
}
});
// Listen to grid button
toggleGridButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
profileGraphPane.showGrid(toggleGridButton.isSelected());
profileGraphPane.repaint();
}
});
// Listen to export button
exportProfileButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
if (dirFwdButton.isSelected() && dirRevButton.isSelected()) {
DccSpeedProfile[] sp = { spFwd, spRev };
DccSpeedProfile.export(sp, profileAddress, profileGraphPane.getUnits());
} else if (dirFwdButton.isSelected()) {
DccSpeedProfile.export(spFwd, profileAddress, "fwd", profileGraphPane.getUnits());
} else if (dirRevButton.isSelected()) {
DccSpeedProfile.export(spRev, profileAddress, "rev", profileGraphPane.getUnits());
}
}
});
// Listen to print button
printProfileButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
profileGraphPane.printProfile(printTitleText.getText());
}
});
// Listen to reset graph button
resetGraphButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
spFwd.clear();
spRev.clear();
spRef.clear();
speedoDialDisplay.reset();
profileGraphPane.repaint();
}
});
// Listen to Load Reference button
loadProfileButton.addActionListener(new java.awt.event.ActionListener() {
@Override
public void actionPerformed(java.awt.event.ActionEvent e) {
spRef.clear();
int response = spRef.importDccProfile(profileGraphPane.getUnits());
if (response == -1) {
statusLabel.setText(rb.getString("StatFileError"));
} else {
statusLabel.setText(rb.getString("StatFileSuccess"));
}
profileGraphPane.repaint();
}
});
profilePane.add(profileSouthPane, BorderLayout.SOUTH);
// Pane to hold controls
JPanel profileControlPane = new JPanel();
profileControlPane.setLayout(new BoxLayout(profileControlPane, BoxLayout.Y_AXIS));
dirFwdButton.setSelected(true);
dirFwdButton.setToolTipText(rb.getString("TTMeasFwd"));
dirRevButton.setToolTipText(rb.getString("TTMeasRev"));
dirFwdButton.setForeground(Color.RED);
dirRevButton.setForeground(Color.BLUE);
profileControlPane.add(dirFwdButton);
profileControlPane.add(dirRevButton);
toggleGridButton.setSelected(true);
profileControlPane.add(toggleGridButton);
profileGraphPane.showGrid(toggleGridButton.isSelected());
profilePane.add(profileControlPane, BorderLayout.EAST);
/*
* Create the tabbed pane and add the panes
*/
// JTabbedPane tabbedPane = new JTabbedPane();
JPanel tabbedPane = new JPanel();
tabbedPane.setLayout(new BoxLayout(tabbedPane, BoxLayout.X_AXIS));
// make basic panel
// tabbedPane.addTab(rb.getString("Setup"), null, basicPane, "Basic Speedo Operation");
tabbedPane.add(basicPane);
if (((dccServices & THROTTLE) == THROTTLE) || ((dccServices & COMMAND) == COMMAND)) {
// tabbedPane.addTab(rb.getString("Profile"), null, profilePane, "Profile Loco");
tabbedPane.add(profilePane);
}
// connect to TrafficController
tc = _memo.getTrafficController();
tc.addSpeedoListener(this);
// add help menu to window
addHelpMenu("package.jmri.jmrix.bachrus.SpeedoConsoleFrame", true);
// Create a wrapper with a status line and add the main content
JPanel statusWrapper = new JPanel();
statusWrapper.setLayout(new BorderLayout());
JPanel statusPanel = new JPanel();
statusPanel.setLayout(new BorderLayout());
statusPanel.add(statusLabel, BorderLayout.WEST);
statusPanel.setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED));
statusWrapper.add(tabbedPane, BorderLayout.CENTER);
statusWrapper.add(statusPanel, BorderLayout.SOUTH);
getContentPane().add(statusWrapper);
// pack for display
pack();
speedoDialDisplay.scaleFace();
}
use of java.awt.CardLayout in project processdash by dtuma.
the class PreferencesDialog method valueChanged.
/**
* Called when the category is changed
*/
public void valueChanged(ListSelectionEvent e) {
if (!e.getValueIsAdjusting()) {
JList list = (JList) e.getSource();
PreferencesCategory selectedCategory = (PreferencesCategory) list.getSelectedValue();
if (!builtForms.contains(selectedCategory.getCategoryID())) {
// The selected form has not been built yet so we create it.
PreferencesForm form = new PreferencesForm(selectedCategory);
form.put(DashboardContext.class, dashboardContext);
form.addPropertyChangeListener(this);
restartRequiredSettings.addAll(form.getRequireRestartSettings());
preferencesPanels.add(form.getPanel(), selectedCategory.getCategoryID());
builtForms.add(selectedCategory.getCategoryID());
}
CardLayout layout = (CardLayout) preferencesPanels.getLayout();
layout.show(preferencesPanels, selectedCategory.getCategoryID());
pack();
}
}
use of java.awt.CardLayout in project cayenne by apache.
the class SelectQueryOrderingTab method initView.
protected void initView() {
messagePanel = new JPanel(new BorderLayout());
cardLayout = new CardLayout();
Preferences detail = Application.getInstance().getPreferencesNode(this.getClass(), "");
int defLocation = Application.getFrame().getHeight() / 2;
int location = detail != null ? detail.getInt(getDividerLocationProperty(), defLocation) : defLocation;
// As of CAY-888 #3 main pane is now a JSplitPane. Top component is a bit larger.
JSplitPane mainPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
mainPanel.addPropertyChangeListener(JSplitPane.DIVIDER_LOCATION_PROPERTY, this);
mainPanel.setDividerLocation(location);
mainPanel.setTopComponent(createEditorPanel());
mainPanel.setBottomComponent(createSelectorPanel());
setLayout(cardLayout);
add(mainPanel, REAL_PANEL);
add(messagePanel, PLACEHOLDER_PANEL);
}
use of java.awt.CardLayout in project cayenne by apache.
the class PreferenceDialogView method init.
private void init() {
split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
split.setBorder(TopBorder.create());
list = new JList<>();
list.setCellRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
setBorder(BorderFactory.createEmptyBorder(5, 8, 5, 0));
return this;
}
});
list.setFont(new JLabel().getFont().deriveFont(Font.BOLD, 12));
detailLayout = new CardLayout();
detailPanel = new JPanel(detailLayout);
saveButton = new JButton("Save");
cancelButton = new JButton("Cancel");
// assemble
Container leftContainer = new JPanel(new BorderLayout());
JScrollPane scrollPane = new JScrollPane(list);
scrollPane.setBorder(BorderFactory.createEmptyBorder());
leftContainer.add(scrollPane);
leftContainer.setPreferredSize(new Dimension(180, 400));
split.setLeftComponent(leftContainer);
split.setRightComponent(detailPanel);
split.setDividerSize(3);
JPanel buttons = new JPanel(new FlowLayout(FlowLayout.RIGHT));
buttons.add(cancelButton);
buttons.add(saveButton);
buttons.setBorder(TopBorder.create());
getContentPane().setLayout(new BorderLayout());
getContentPane().add(split, BorderLayout.CENTER);
getContentPane().add(buttons, BorderLayout.SOUTH);
setTitle("Edit Preferences");
}
Aggregations