use of jmri.jmrit.symbolicprog.QualifierAdder in project JMRI by JMRI.
the class PaneProgPane method newColumn.
/**
* Create a single column from the JDOM column Element.
*
* @param element element containing column contents
* @param showStdName show the name following the rules for the
* <em>nameFmt</em> element
* @param modelElem element containing the decoder model
* @return a panel containing the group
*/
public JPanel newColumn(Element element, boolean showStdName, Element modelElem) {
// create a panel to add as a new column or row
final JPanel c = new JPanel();
panelList.add(c);
GridBagLayout g = new GridBagLayout();
GridBagConstraints cs = new GridBagConstraints();
c.setLayout(g);
// handle the xml definition
// for all elements in the column or row
List<Element> elemList = element.getChildren();
log.trace("newColumn starting with {} elements", elemList.size());
for (int i = 0; i < elemList.size(); i++) {
// update the grid position
cs.gridy++;
cs.gridx = 0;
Element e = (elemList.get(i));
String name = e.getName();
log.trace("newColumn processing {} element", name);
// decode the type
if (name.equals("display")) {
// its a variable
// load the variable
newVariable(e, c, g, cs, showStdName);
} else if (name.equals("separator")) {
// its a separator
JSeparator j = new JSeparator(javax.swing.SwingConstants.HORIZONTAL);
cs.fill = GridBagConstraints.BOTH;
cs.gridwidth = GridBagConstraints.REMAINDER;
g.setConstraints(j, cs);
c.add(j);
cs.gridwidth = 1;
} else if (name.equals("label")) {
cs.gridwidth = GridBagConstraints.REMAINDER;
makeLabel(e, c, g, cs);
} else if (name.equals("soundlabel")) {
cs.gridwidth = GridBagConstraints.REMAINDER;
makeSoundLabel(e, c, g, cs);
} else if (name.equals("cvtable")) {
makeCvTable(cs, g, c);
} else if (name.equals("indxcvtable")) {
log.debug("starting to build IndexedCvTable pane");
JTable indxcvTable = new JTable(_indexedCvModel);
JScrollPane cvScroll = new JScrollPane(indxcvTable);
indxcvTable.setDefaultRenderer(JTextField.class, new ValueRenderer());
indxcvTable.setDefaultRenderer(JButton.class, new ValueRenderer());
indxcvTable.setDefaultEditor(JTextField.class, new ValueEditor());
indxcvTable.setDefaultEditor(JButton.class, new ValueEditor());
indxcvTable.setRowHeight(new JButton("X").getPreferredSize().height);
indxcvTable.setPreferredScrollableViewportSize(new Dimension(700, indxcvTable.getRowHeight() * 14));
cvScroll.setColumnHeaderView(indxcvTable.getTableHeader());
// don't want a horizontal scroll bar
// Need to see the whole row at one time
// indxcvTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
cs.gridwidth = GridBagConstraints.REMAINDER;
g.setConstraints(cvScroll, cs);
c.add(cvScroll);
cs.gridwidth = 1;
// remember which indexed CVs to read/write
for (int j = 0; j < _indexedCvModel.getRowCount(); j++) {
String sz = "CV" + _indexedCvModel.getName(j);
int in = _varModel.findVarIndex(sz);
indexedCvList.add(in);
}
_cvTable = true;
log.debug("end of building IndexedCvTable pane");
} else if (name.equals("fnmapping")) {
pickFnMapPanel(c, g, cs, modelElem);
} else if (name.equals("dccaddress")) {
JPanel l = addDccAddressPanel(e);
if (l.getComponentCount() > 0) {
cs.gridwidth = GridBagConstraints.REMAINDER;
g.setConstraints(l, cs);
c.add(l);
cs.gridwidth = 1;
}
} else if (name.equals("column")) {
// nested "column" elements ...
cs.gridheight = GridBagConstraints.REMAINDER;
JPanel l = newColumn(e, showStdName, modelElem);
if (l.getComponentCount() > 0) {
panelList.add(l);
g.setConstraints(l, cs);
c.add(l);
cs.gridheight = 1;
}
} else if (name.equals("row")) {
// nested "row" elements ...
cs.gridwidth = GridBagConstraints.REMAINDER;
JPanel l = newRow(e, showStdName, modelElem);
if (l.getComponentCount() > 0) {
panelList.add(l);
g.setConstraints(l, cs);
c.add(l);
cs.gridwidth = 1;
}
} else if (name.equals("grid")) {
// nested "grid" elements ...
cs.gridwidth = GridBagConstraints.REMAINDER;
JPanel l = newGrid(e, showStdName, modelElem);
if (l.getComponentCount() > 0) {
panelList.add(l);
g.setConstraints(l, cs);
c.add(l);
cs.gridwidth = 1;
}
} else if (name.equals("group")) {
// nested "group" elements ...
JPanel l = newGroup(e, showStdName, modelElem);
if (l.getComponentCount() > 0) {
panelList.add(l);
g.setConstraints(l, cs);
c.add(l);
}
} else if (!name.equals("qualifier")) {
// its a mistake
log.error("No code to handle element of type " + e.getName() + " in newColumn");
}
}
// add glue to the bottom to allow resize
if (c.getComponentCount() > 0) {
c.add(Box.createVerticalGlue());
}
// handle qualification if any
QualifierAdder qa = new QualifierAdder() {
@Override
protected Qualifier createQualifier(VariableValue var, String relation, String value) {
return new JComponentQualifier(c, var, Integer.parseInt(value), relation);
}
@Override
protected void addListener(java.beans.PropertyChangeListener qc) {
c.addPropertyChangeListener(qc);
}
};
qa.processModifierElements(element, _varModel);
return c;
}
use of jmri.jmrit.symbolicprog.QualifierAdder in project JMRI by JMRI.
the class PaneProgPane method newGroup.
/**
* Create a new group from the JDOM group Element
*
* @param element element containing group contents
* @param showStdName show the name following the rules for the
* <em>nameFmt</em> element
* @param modelElem element containing the decoder model
* @return a panel containing the group
*/
protected JPanel newGroup(Element element, boolean showStdName, Element modelElem) {
// create a panel to add as a new column or row
final JPanel c = new JPanel();
panelList.add(c);
GridBagLayout g = new GridBagLayout();
GridBagConstraints cs = new GridBagConstraints();
c.setLayout(g);
// handle include/exclude
if (!PaneProgFrame.isIncludedFE(element, modelElem, rosterEntry, "", "")) {
return c;
}
// handle the xml definition
// for all elements in the column or row
List<Element> elemList = element.getChildren();
log.trace("newColumn starting with {} elements", elemList.size());
for (int i = 0; i < elemList.size(); i++) {
Element e = (elemList.get(i));
String name = e.getName();
log.trace("newGroup processing {} element", name);
// decode the type
if (name.equals("display")) {
// its a variable
// load the variable
newVariable(e, c, g, cs, showStdName);
} else if (name.equals("separator")) {
// its a separator
JSeparator j = new JSeparator(javax.swing.SwingConstants.HORIZONTAL);
cs.fill = GridBagConstraints.BOTH;
cs.gridwidth = GridBagConstraints.REMAINDER;
g.setConstraints(j, cs);
c.add(j);
cs.gridwidth = 1;
} else if (name.equals("label")) {
cs.gridwidth = GridBagConstraints.REMAINDER;
makeLabel(e, c, g, cs);
} else if (name.equals("soundlabel")) {
cs.gridwidth = GridBagConstraints.REMAINDER;
makeSoundLabel(e, c, g, cs);
} else if (name.equals("cvtable")) {
makeCvTable(cs, g, c);
} else if (name.equals("indxcvtable")) {
log.debug("starting to build IndexedCvTable pane");
JTable indxcvTable = new JTable(_indexedCvModel);
JScrollPane cvScroll = new JScrollPane(indxcvTable);
indxcvTable.setDefaultRenderer(JTextField.class, new ValueRenderer());
indxcvTable.setDefaultRenderer(JButton.class, new ValueRenderer());
indxcvTable.setDefaultEditor(JTextField.class, new ValueEditor());
indxcvTable.setDefaultEditor(JButton.class, new ValueEditor());
indxcvTable.setRowHeight(new JButton("X").getPreferredSize().height);
indxcvTable.setPreferredScrollableViewportSize(new Dimension(700, indxcvTable.getRowHeight() * 14));
cvScroll.setColumnHeaderView(indxcvTable.getTableHeader());
// don't want a horizontal scroll bar
// Need to see the whole row at one time
// indxcvTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
cs.gridwidth = GridBagConstraints.REMAINDER;
g.setConstraints(cvScroll, cs);
c.add(cvScroll);
cs.gridwidth = 1;
// remember which indexed CVs to read/write
for (int j = 0; j < _indexedCvModel.getRowCount(); j++) {
String sz = "CV" + _indexedCvModel.getName(j);
int in = _varModel.findVarIndex(sz);
indexedCvList.add(in);
}
_cvTable = true;
log.debug("end of building IndexedCvTable pane");
} else if (name.equals("fnmapping")) {
pickFnMapPanel(c, g, cs, modelElem);
} else if (name.equals("dccaddress")) {
JPanel l = addDccAddressPanel(e);
if (l.getComponentCount() > 0) {
cs.gridwidth = GridBagConstraints.REMAINDER;
g.setConstraints(l, cs);
c.add(l);
cs.gridwidth = 1;
}
} else if (name.equals("column")) {
// nested "column" elements ...
cs.gridheight = GridBagConstraints.REMAINDER;
JPanel l = newColumn(e, showStdName, modelElem);
if (l.getComponentCount() > 0) {
panelList.add(l);
g.setConstraints(l, cs);
c.add(l);
cs.gridheight = 1;
}
} else if (name.equals("row")) {
// nested "row" elements ...
cs.gridwidth = GridBagConstraints.REMAINDER;
JPanel l = newRow(e, showStdName, modelElem);
if (l.getComponentCount() > 0) {
panelList.add(l);
g.setConstraints(l, cs);
c.add(l);
cs.gridwidth = 1;
}
} else if (name.equals("grid")) {
// nested "grid" elements ...
cs.gridwidth = GridBagConstraints.REMAINDER;
JPanel l = newGrid(e, showStdName, modelElem);
if (l.getComponentCount() > 0) {
panelList.add(l);
g.setConstraints(l, cs);
c.add(l);
cs.gridwidth = 1;
}
} else if (name.equals("group")) {
// nested "group" elements ...
JPanel l = newGroup(e, showStdName, modelElem);
if (l.getComponentCount() > 0) {
panelList.add(l);
g.setConstraints(l, cs);
c.add(l);
}
} else if (!name.equals("qualifier")) {
// its a mistake
log.error("No code to handle element of type " + e.getName() + " in newColumn");
}
}
// add glue to the bottom to allow resize
if (c.getComponentCount() > 0) {
c.add(Box.createVerticalGlue());
}
// handle qualification if any
QualifierAdder qa = new QualifierAdder() {
@Override
protected Qualifier createQualifier(VariableValue var, String relation, String value) {
return new JComponentQualifier(c, var, Integer.parseInt(value), relation);
}
@Override
protected void addListener(java.beans.PropertyChangeListener qc) {
c.addPropertyChangeListener(qc);
}
};
qa.processModifierElements(element, _varModel);
return c;
}
use of jmri.jmrit.symbolicprog.QualifierAdder in project JMRI by JMRI.
the class PaneProgPane method newGrid.
/**
* Create a grid from the JDOM Element.
*
* @param element element containing group contents
* @param showStdName show the name following the rules for the
* <em>nameFmt</em> element
* @param modelElem element containing the decoder model
* @return a panel containing the group
*/
public JPanel newGrid(Element element, boolean showStdName, Element modelElem) {
// create a panel to add as a new grid
final JPanel c = new JPanel();
panelList.add(c);
GridBagLayout g = new GridBagLayout();
c.setLayout(g);
GridGlobals globs = new GridGlobals();
// handle the xml definition
// for all elements in the grid
List<Element> elemList = element.getChildren();
// get grid-level attributes
globs.gridAttList = element.getAttributes();
log.trace("newGrid starting with {} elements", elemList.size());
for (int i = 0; i < elemList.size(); i++) {
globs.gridConstraints = new GridBagConstraints();
Element e = elemList.get(i);
String name = e.getName();
log.trace("newGrid processing {} element", name);
// decode the type
if (name.equals("griditem")) {
JPanel l = newGridItem(e, showStdName, modelElem, globs);
if (l.getComponentCount() > 0) {
panelList.add(l);
g.setConstraints(l, globs.gridConstraints);
c.add(l);
// globs.gridConstraints.gridwidth = 1;
}
} else if (name.equals("group")) {
// nested "group" elements ...
newGridGroup(e, c, g, globs, showStdName, modelElem);
} else if (!name.equals("qualifier")) {
// its a mistake
log.error("No code to handle element of type " + e.getName() + " in newGrid");
}
}
// add glue to the bottom to allow resize
if (c.getComponentCount() > 0) {
c.add(Box.createVerticalGlue());
}
// handle qualification if any
QualifierAdder qa = new QualifierAdder() {
@Override
protected Qualifier createQualifier(VariableValue var, String relation, String value) {
return new JComponentQualifier(c, var, Integer.parseInt(value), relation);
}
@Override
protected void addListener(java.beans.PropertyChangeListener qc) {
c.addPropertyChangeListener(qc);
}
};
qa.processModifierElements(element, _varModel);
return c;
}
use of jmri.jmrit.symbolicprog.QualifierAdder in project JMRI by JMRI.
the class PaneProgPane method newGridGroup.
/**
* Create a new grid group from the JDOM group Element.
*
* @param element element containing group contents
* @param c the panel to create the grid in
* @param g the layout manager for the panel
* @param globs properties to configure g
* @param showStdName show the name following the rules for the
* <em>nameFmt</em> element
* @param modelElem element containing the decoder model
*/
protected void newGridGroup(Element element, final JPanel c, GridBagLayout g, GridGlobals globs, boolean showStdName, Element modelElem) {
// handle include/exclude
if (!PaneProgFrame.isIncludedFE(element, modelElem, rosterEntry, "", "")) {
return;
}
// handle the xml definition
// for all elements in the column or row
List<Element> elemList = element.getChildren();
log.trace("newColumn starting with {} elements", elemList.size());
for (int i = 0; i < elemList.size(); i++) {
Element e = (elemList.get(i));
String name = e.getName();
log.trace("newGroup processing {} element", name);
// decode the type
if (name.equals("griditem")) {
final JPanel l = newGridItem(e, showStdName, modelElem, globs);
if (l.getComponentCount() > 0) {
panelList.add(l);
g.setConstraints(l, globs.gridConstraints);
c.add(l);
// globs.gridConstraints.gridwidth = 1;
// handle qualification if any
QualifierAdder qa = new QualifierAdder() {
@Override
protected Qualifier createQualifier(VariableValue var, String relation, String value) {
return new JComponentQualifier(l, var, Integer.parseInt(value), relation);
}
@Override
protected void addListener(java.beans.PropertyChangeListener qc) {
l.addPropertyChangeListener(qc);
}
};
qa.processModifierElements(e, _varModel);
}
} else if (name.equals("group")) {
// nested "group" elements ...
newGridGroup(e, c, g, globs, showStdName, modelElem);
} else if (!name.equals("qualifier")) {
// its a mistake
log.error("No code to handle element of type " + e.getName() + " in newColumn");
}
}
// add glue to the bottom to allow resize
// if (c.getComponentCount() > 0) {
// c.add(Box.createVerticalGlue());
// }
}
Aggregations