summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/gui/tabs/outcome/form/Dimension.java
diff options
context:
space:
mode:
Diffstat (limited to 'source/com/c2kernel/gui/tabs/outcome/form/Dimension.java')
-rw-r--r--source/com/c2kernel/gui/tabs/outcome/form/Dimension.java132
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();
}
}