diff options
| author | abranson <andrew.branson@cern.ch> | 2011-08-04 00:42:34 +0200 |
|---|---|---|
| committer | abranson <andrew.branson@cern.ch> | 2011-08-04 00:42:34 +0200 |
| commit | 0ec8481c10cd8277d84c7c1a785483a0a739e5a0 (patch) | |
| tree | 5f6e5d9ae75193e67e6f3b3dfa488960c5cde1d5 /source/com/c2kernel/gui/tabs/outcome/form/Dimension.java | |
| parent | 036cbdba66f804743c4c838ed598d6972c4b3e17 (diff) | |
More code cleanup:
Refactored Entity Proxy Subscription to handle generics better
Rewrote RemoteMap to use TreeMap instead of the internal array for
order. It now sorts its keys by number if they parse, else as strings.
Removed a no-longer-in-progress outcome form class
Diffstat (limited to 'source/com/c2kernel/gui/tabs/outcome/form/Dimension.java')
| -rw-r--r-- | source/com/c2kernel/gui/tabs/outcome/form/Dimension.java | 132 |
1 files changed, 75 insertions, 57 deletions
diff --git a/source/com/c2kernel/gui/tabs/outcome/form/Dimension.java b/source/com/c2kernel/gui/tabs/outcome/form/Dimension.java index 8de306b..c91c5df 100644 --- a/source/com/c2kernel/gui/tabs/outcome/form/Dimension.java +++ b/source/com/c2kernel/gui/tabs/outcome/form/Dimension.java @@ -1,6 +1,6 @@ package com.c2kernel.gui.tabs.outcome.form;
-import java.awt.*;
import java.awt.FlowLayout;
+import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
@@ -11,7 +11,15 @@ import java.awt.event.FocusListener; import java.util.ArrayList;
import java.util.Iterator;
-import javax.swing.*;
+import javax.swing.BorderFactory;
+import javax.swing.Box;
+import javax.swing.JButton;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JTabbedPane;
+import javax.swing.JTable;
+import javax.swing.ListSelectionModel;
import javax.swing.border.EtchedBorder;
import javax.swing.table.JTableHeader;
@@ -38,7 +46,7 @@ public class Dimension extends OutcomeStructure implements ActionListener { Box tableBox;
ArrayList<DimensionInstance> instances = new ArrayList<DimensionInstance>(); // stores DimensionInstances if tabs
ArrayList<Element> elements = new ArrayList<Element>(); // stores current children
-
+
JButton addButton;
JButton delButton;
@@ -61,17 +69,17 @@ public class Dimension extends OutcomeStructure implements ActionListener { position.insets = new Insets(0,0,0,0);
// TODO: an element or attribute of the dimension can be flagged as an index, so it can be used as a title for a tab
-
+
// set up the border
setBorder(BorderFactory.createTitledBorder(
BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), model.getName()));
-
+
msg = new JLabel("No elements");
msg.setFont(new Font("SansSerif", Font.ITALIC, msg.getFont().getSize()));
gridbag.setConstraints(msg, position);
add(msg);
position.gridy++;
-
+
// decide whether a table or tabs
try {
tableModel = new DimensionTableModel(model, readOnly);
@@ -90,10 +98,10 @@ public class Dimension extends OutcomeStructure implements ActionListener { gridbag.setConstraints(tableBox, position);
add(tableBox);
tableBox.setVisible(false);
-
+
} catch (StructuralException e) {
// use tabs
- Logger.msg(8, "DIM "+model.getName()+" - Will be tabs: "+e.getMessage());
+ Logger.msg(8, "DIM "+model.getName()+" - Will be tabs: "+e.getMessage());
mode = TABS;
tabs = new JTabbedPane();
gridbag.setConstraints(tabs, position);
@@ -101,7 +109,7 @@ public class Dimension extends OutcomeStructure implements ActionListener { tabs.setVisible(false);
}
if (!readOnly) {
- JPanel rowAdjust = new JPanel(new FlowLayout());
+ JPanel rowAdjust = new JPanel(new FlowLayout());
addButton = new JButton("+");
addButton.setActionCommand("add");
addButton.addActionListener(this);
@@ -113,19 +121,20 @@ public class Dimension extends OutcomeStructure implements ActionListener { delButton.setEnabled(false);
rowAdjust.add(delButton);
-
+
position.gridy++; position.weighty=0; position.weightx=0;
gridbag.setConstraints(rowAdjust, position);
this.add(rowAdjust);
}
-
+
}
-
+
public void setParentElement(Element parent) {
this.parent = parent;
}
- public void addInstance(Element myElement, Document parentDoc) throws OutcomeException {
+ @Override
+ public void addInstance(Element myElement, Document parentDoc) throws OutcomeException {
if (Logger.doLog(6))
Logger.msg(6, "DIM - adding instance "+ (elements.size()+1) +" for "+myElement.getTagName());
if (parent == null) setParentElement((Element)myElement.getParentNode());
@@ -134,24 +143,24 @@ public class Dimension extends OutcomeStructure implements ActionListener { tableModel.addInstance(myElement, -1);
elements.add(myElement);
}
- else {
+ else {
DimensionInstance target;
elements.add(myElement);
if (instances.size() < elements.size())
target = newInstance();
else
- target = (DimensionInstance)instances.get(elements.size()-1);
+ target = instances.get(elements.size()-1);
target.addInstance(myElement, parentDoc);
}
checkButtons();
}
-
+
public int getChildCount() {
return elements.size();
}
public DimensionInstance newInstance() {
- DimensionInstance newInstance = null;
+ DimensionInstance newInstance = null;
try {
newInstance = new DimensionInstance(model, readOnly, helpPane, deferChild);
instances.add(newInstance);
@@ -166,37 +175,38 @@ public class Dimension extends OutcomeStructure implements ActionListener { }
return newInstance;
}
-
- public String validateStructure() {
+
+ @Override
+ public String validateStructure() {
if (mode == TABLE)
return table.validateStructure();
else {
StringBuffer errors = new StringBuffer();
- for (Iterator iter = instances.iterator(); iter.hasNext();) {
- OutcomeStructure element = (OutcomeStructure)iter.next();
+ for (Iterator<DimensionInstance> iter = instances.iterator(); iter.hasNext();) {
+ OutcomeStructure element = iter.next();
errors.append(element.validateStructure());
}
- return errors.toString();
+ return errors.toString();
}
}
-
+
public void checkButtons() {
// check if data visible
boolean dataVisible = elements.size() > 0;
if (mode == TABS) tabs.setVisible(dataVisible);
else tableBox.setVisible(dataVisible);
msg.setVisible(!dataVisible);
-
+
if (readOnly) return;
-
+
if (elements.size() <= model.getMinOccurs() || elements.size() == 0) {
- delButton.setEnabled(false);
+ delButton.setEnabled(false);
delButton.setToolTipText("Minimum row count of "+model.getMinOccurs()+" reached.");
} else {
- delButton.setEnabled(true);
+ delButton.setEnabled(true);
delButton.setToolTipText(null);
}
-
+
if (elements.size() < model.getMaxOccurs() || model.getMaxOccurs() == Particle.UNBOUNDED) {
addButton.setEnabled(true);
addButton.setToolTipText(null);
@@ -205,8 +215,9 @@ public class Dimension extends OutcomeStructure implements ActionListener { addButton.setToolTipText("Maximum row count of "+model.getMaxOccurs()+" reached.");
}
}
-
- public Element initNew(Document parent) {
+
+ @Override
+ public Element initNew(Document parent) {
Element newElement;
if (mode == TABLE) {
@@ -220,19 +231,20 @@ public class Dimension extends OutcomeStructure implements ActionListener { if (instances.size() < elements.size()+1)
newTab = newInstance();
else
- newTab = (DimensionInstance)instances.get(elements.size()-1);
+ newTab = instances.get(elements.size()-1);
newElement = newTab.initNew(parent);
elements.add(newElement);
- checkButtons();
+ checkButtons();
return newElement;
}
}
-
- public void actionPerformed(ActionEvent e) {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
int index;
if (mode == TABS) index = tabs.getSelectedIndex();
else {
- index = table.getSelectedRow();
+ index = table.getSelectedRow();
if (index == -1) index = tableModel.getRowCount();
}
try {
@@ -246,16 +258,16 @@ public class Dimension extends OutcomeStructure implements ActionListener { JOptionPane.showMessageDialog(null, ex.getMessage(), "Table error", JOptionPane.ERROR_MESSAGE);
}
}
-
+
public void addRow(int index) throws CardinalException {
- if (elements.size() == model.getMaxOccurs())
+ if (elements.size() == model.getMaxOccurs())
throw new CardinalException("Maximum size of table reached");
-
+
if (mode == TABLE) {
Element newRow = tableModel.initNew(parent.getOwnerDocument(), index);
elements.add(index, newRow);
try {
- Element following = (Element)elements.get(index+1);
+ Element following = elements.get(index+1);
parent.insertBefore(newRow, following);
} catch (IndexOutOfBoundsException ex) {
parent.appendChild(newRow);
@@ -268,9 +280,9 @@ public class Dimension extends OutcomeStructure implements ActionListener { parent.appendChild(newTab);
}
checkButtons();
-
- }
-
+
+ }
+
public void removeRow(int index) throws CardinalException {
if (elements.size() <= model.getMinOccurs())
throw new CardinalException("Minimum size of table reached");
@@ -284,12 +296,12 @@ public class Dimension extends OutcomeStructure implements ActionListener { }
}
else {
- Element elementToGo = (Element)elements.get(index);
+ Element elementToGo = elements.get(index);
parent.removeChild(elementToGo);
instances.remove(index);
tabs.remove(index);
for (int i = index; i<instances.size(); i++) {
- DimensionInstance thisInstance = (DimensionInstance)instances.get(i);
+ DimensionInstance thisInstance = instances.get(i);
thisInstance.setTabNumber(i+1);
tabs.setTitleAt(i, thisInstance.getName());
}
@@ -297,9 +309,9 @@ public class Dimension extends OutcomeStructure implements ActionListener { elements.remove(index);
checkButtons();
}
-
+
private class DomKeyPushTable extends JTable implements DomainKeyConsumer, FocusListener {
-
+
Dimension dim;
public DomKeyPushTable(DimensionTableModel model, Dimension parent) {
super(model);
@@ -307,11 +319,13 @@ public class Dimension extends OutcomeStructure implements ActionListener { this.dim = parent;
}
- public void push(DomainPath key) {
+ @Override
+ public void push(DomainPath key) {
push(key.getName());
}
- public void push(String name) {
+ @Override
+ public void push(String name) {
int col = getSelectedColumn();
int row = getSelectedRow();
if (cellEditor != null)
@@ -333,27 +347,30 @@ public class Dimension extends OutcomeStructure implements ActionListener { if (row+1 < getRowCount()) {
Logger.msg(8, "Shifting selection to row "+(row+1));
changeSelection(row+1, col, false, false);
- }
+ }
}
}
-
- public void focusGained(FocusEvent e) {
+
+ @Override
+ public void focusGained(FocusEvent e) {
if (!readOnly)
MainFrame.itemFinder.setConsumer(this, "Insert");
}
- public void focusLost(FocusEvent e) {
+ @Override
+ public void focusLost(FocusEvent e) {
// release the itemFinder
- if (!readOnly)
+ if (!readOnly)
MainFrame.itemFinder.clearConsumer(this);
}
-
+
public String validateStructure() {
if (cellEditor != null)
cellEditor.stopCellEditing();
return null;
}
+ @Override
public void changeSelection( int rowIndex, int columnIndex, boolean toggle, boolean extend) {
super.changeSelection(rowIndex, columnIndex, toggle, extend);
DimensionTableModel dimModel = (DimensionTableModel)dataModel;
@@ -361,8 +378,9 @@ public class Dimension extends OutcomeStructure implements ActionListener { }
}
-
- public void grabFocus() {
+
+ @Override
+ public void grabFocus() {
if (mode == TABLE) {
if (table.getSelectedRow() == -1 && table.getRowCount() > 0) {
table.changeSelection(0, 0, false, false);
@@ -371,7 +389,7 @@ public class Dimension extends OutcomeStructure implements ActionListener { table.requestFocus();
}
else if (instances.size()> 0)
- ((DimensionInstance)instances.get(0)).grabFocus();
+ instances.get(0).grabFocus();
}
}
|
