From 0ec8481c10cd8277d84c7c1a785483a0a739e5a0 Mon Sep 17 00:00:00 2001 From: abranson Date: Thu, 4 Aug 2011 00:42:34 +0200 Subject: 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 --- .../c2kernel/gui/tabs/outcome/form/Dimension.java | 132 ++++++++++++--------- 1 file changed, 75 insertions(+), 57 deletions(-) (limited to 'source/com/c2kernel/gui/tabs/outcome/form/Dimension.java') 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 instances = new ArrayList(); // stores DimensionInstances if tabs ArrayList elements = new ArrayList(); // 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 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 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(); } } -- cgit v1.2.3