summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Branson <andrew.branson@cern.ch>2014-09-16 08:50:53 +0200
committerAndrew Branson <andrew.branson@cern.ch>2014-09-16 08:50:53 +0200
commit6502813a6fd83865b37903692cfe6e0903f74ea2 (patch)
tree2fb8397d545da9982b2e3e1060cbf29d35b79ffa
parent8f64e9ebaf48e73e50473782f5696a053a76f114 (diff)
Support for abstract vertex properties
-rw-r--r--src/main/java/com/c2kernel/gui/graph/view/PropertyTableModel.java66
-rw-r--r--src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java13
-rw-r--r--src/main/java/com/c2kernel/gui/tabs/collection/CollectionMemberPropertyPanel.java7
3 files changed, 58 insertions, 28 deletions
diff --git a/src/main/java/com/c2kernel/gui/graph/view/PropertyTableModel.java b/src/main/java/com/c2kernel/gui/graph/view/PropertyTableModel.java
index a339f8d..616c302 100644
--- a/src/main/java/com/c2kernel/gui/graph/view/PropertyTableModel.java
+++ b/src/main/java/com/c2kernel/gui/graph/view/PropertyTableModel.java
@@ -3,12 +3,12 @@ package com.c2kernel.gui.graph.view;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
-import java.util.HashMap;
import javax.swing.JOptionPane;
import javax.swing.event.TableModelEvent;
import javax.swing.table.AbstractTableModel;
+import com.c2kernel.utils.CastorHashMap;
import com.c2kernel.utils.Language;
/**************************************************************************
@@ -22,8 +22,8 @@ import com.c2kernel.utils.Language;
public class PropertyTableModel extends AbstractTableModel {
- private final String[] mColumnNames = { Language.translate("Name"), Language.translate("Value") };
- public HashMap<String, Object> sourceMap = new HashMap<String, Object>();
+ private final String[] mColumnNames = { Language.translate("Name"), Language.translate("Value"), Language.translate("Abstract") };
+ public CastorHashMap sourceMap = new CastorHashMap();
public ArrayList<String> sortedNameList = new ArrayList<String>();
boolean isEditable = false;
@@ -53,10 +53,16 @@ public class PropertyTableModel extends AbstractTableModel {
{
synchronized (sourceMap) {
String rowName = sortedNameList.get(rowIndex);
- if (colIndex == 0)
- return rowName;
- else
- return sourceMap.get(rowName);
+ switch (colIndex) {
+ case 0:
+ return rowName;
+ case 1:
+ return sourceMap.get(rowName);
+ case 2:
+ return sourceMap.getAbstract().contains(rowName);
+ default:
+ return "";
+ }
}
}
@@ -66,21 +72,39 @@ public class PropertyTableModel extends AbstractTableModel {
synchronized (sourceMap) {
if (colIndex == 0) return;
String rowName = sortedNameList.get(rowIndex);
- Class<? extends Object> oldElement = sourceMap.get(rowName).getClass();
- if (oldElement == Double.class && value.getClass() == String.class)
- try {
- value = Double.valueOf((String)value);
- } catch (Exception ex) { }
- if (value.getClass() != oldElement)
- JOptionPane.showMessageDialog(null, "This property should contain a "+oldElement.getName()+" not a "+value.getClass().getName(), "Incorrect datatype", JOptionPane.ERROR_MESSAGE);
- else {
- sourceMap.put(rowName, value);
- fireTableCellUpdated(rowIndex, colIndex);
+ if (colIndex == 1) {
+ Class<? extends Object> oldElement = sourceMap.get(rowName).getClass();
+ if (oldElement == Double.class && value.getClass() == String.class)
+ try {
+ value = Double.valueOf((String)value);
+ } catch (Exception ex) { }
+ if (value.getClass() != oldElement)
+ JOptionPane.showMessageDialog(null, "This property should contain a "+oldElement.getName()+" not a "+value.getClass().getName(), "Incorrect datatype", JOptionPane.ERROR_MESSAGE);
+ else
+ sourceMap.put(rowName, value);
+ }
+ else if (colIndex == 2) {
+ Boolean boolVal = (Boolean)value;
+ if (boolVal)
+ sourceMap.getAbstract().add(rowName);
+ else
+ sourceMap.getAbstract().remove(rowName);
}
}
+ fireTableCellUpdated(rowIndex, colIndex);
}
- public void setMap(HashMap<String, Object> props) {
+ @Override
+ public Class<?> getColumnClass(int columnIndex) {
+ switch (columnIndex) {
+ case 2:
+ return Boolean.class;
+ default:
+ return String.class;
+ }
+ }
+
+ public void setMap(CastorHashMap props) {
synchronized (sourceMap) {
sourceMap = props;
sortedNameList = new ArrayList<String>(props.size());
@@ -100,7 +124,7 @@ public class PropertyTableModel extends AbstractTableModel {
@Override
public boolean isCellEditable(int row, int col)
{
- return col==1 && isEditable;
+ return col>0 && isEditable;
}
/**
@@ -120,8 +144,8 @@ public class PropertyTableModel extends AbstractTableModel {
* @param text
* @param object
*/
- public void addProperty(String text, Object object) {
- sourceMap.put(text,object);
+ public void addProperty(String text, Object object, boolean isAbstract) {
+ sourceMap.put(text, object, isAbstract);
setMap(sourceMap);
}
diff --git a/src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java b/src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java
index 62ef8c9..d500201 100644
--- a/src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java
+++ b/src/main/java/com/c2kernel/gui/graph/view/VertexPropertyPanel.java
@@ -6,12 +6,12 @@ import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Constructor;
-import java.util.HashMap;
import java.util.Observable;
import java.util.Observer;
import javax.swing.Box;
import javax.swing.JButton;
+import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
@@ -30,6 +30,7 @@ import com.c2kernel.graph.model.Vertex;
import com.c2kernel.gui.MainFrame;
import com.c2kernel.gui.graph.event.SelectionChangedEvent;
import com.c2kernel.gui.tabs.ItemTabPane;
+import com.c2kernel.utils.CastorHashMap;
import com.c2kernel.utils.Language;
/**************************************************************************
@@ -55,6 +56,7 @@ public class VertexPropertyPanel extends JPanel implements Observer, TableModelL
Box newPropBox;
private JTextField newPropName;
private JComboBox newPropType;
+ private JCheckBox newPropAbstract;
String[] typeOptions = { "String", "Boolean", "Integer", "Float" };
String[] typeInitVal = { "", "false", "0", "0.0"};
SelectedVertexPanel mSelPanel;
@@ -138,7 +140,7 @@ public class VertexPropertyPanel extends JPanel implements Observer, TableModelL
public void clear() {
selObjName.setText("");
selObjClass.setText("Nothing Selected");
- mPropertyModel.setMap(new HashMap<String, Object>());
+ mPropertyModel.setMap(new CastorHashMap());
if (mSelPanel != null) mSelPanel.clear();
addPropButton.setEnabled(false);
delPropButton.setEnabled(false);
@@ -199,6 +201,11 @@ public class VertexPropertyPanel extends JPanel implements Observer, TableModelL
newPropBox.add(newPropName);
newPropType = new JComboBox(typeOptions);
newPropBox.add(newPropType);
+ newPropBox.add(Box.createHorizontalGlue());
+ newPropAbstract = new JCheckBox();
+ newPropBox.add(newPropAbstract);
+ newPropBox.add(Box.createHorizontalStrut(1));
+ newPropBox.add(new JLabel("Abstract"));
newPropBox.add(Box.createHorizontalStrut(1));
addPropButton = new JButton("Add");
addPropButton.setMargin(new Insets(0, 0, 0, 0));
@@ -242,7 +249,7 @@ public class VertexPropertyPanel extends JPanel implements Observer, TableModelL
Class<?>[] params = {String.class};
Constructor<?> init = newPropClass.getConstructor(params);
Object[] initParams = { typeInitVal[newPropType.getSelectedIndex()] };
- mPropertyModel.addProperty(newPropName.getText(), init.newInstance(initParams));
+ mPropertyModel.addProperty(newPropName.getText(), init.newInstance(initParams), newPropAbstract.isSelected());
} catch (Exception ex) {
MainFrame.exceptionDialog(ex);
}
diff --git a/src/main/java/com/c2kernel/gui/tabs/collection/CollectionMemberPropertyPanel.java b/src/main/java/com/c2kernel/gui/tabs/collection/CollectionMemberPropertyPanel.java
index bfbcdc5..478403c 100644
--- a/src/main/java/com/c2kernel/gui/tabs/collection/CollectionMemberPropertyPanel.java
+++ b/src/main/java/com/c2kernel/gui/tabs/collection/CollectionMemberPropertyPanel.java
@@ -6,7 +6,6 @@ import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.reflect.Constructor;
-import java.util.HashMap;
import javax.swing.Box;
import javax.swing.JButton;
@@ -23,9 +22,9 @@ import com.c2kernel.gui.MainFrame;
import com.c2kernel.gui.graph.view.PropertyTable;
import com.c2kernel.gui.graph.view.PropertyTableModel;
import com.c2kernel.gui.tabs.ItemTabPane;
-import com.c2kernel.lookup.InvalidItemPathException;
import com.c2kernel.lookup.ItemPath;
import com.c2kernel.process.Gateway;
+import com.c2kernel.utils.CastorHashMap;
import com.c2kernel.utils.Language;
public class CollectionMemberPropertyPanel extends JPanel implements ActionListener {
@@ -132,7 +131,7 @@ public class CollectionMemberPropertyPanel extends JPanel implements ActionListe
public void clear() {
selObjSlot.setText("");
selObjMember.setText("Nothing Selected");
- mPropertyModel.setMap(new HashMap<String, Object>());
+ mPropertyModel.setMap(new CastorHashMap());
addPropButton.setEnabled(false);
delPropButton.setEnabled(false);
}
@@ -165,7 +164,7 @@ public class CollectionMemberPropertyPanel extends JPanel implements ActionListe
Class<?>[] params = {String.class};
Constructor<?> init = newPropClass.getConstructor(params);
Object[] initParams = { typeInitVal[newPropType.getSelectedIndex()] };
- mPropertyModel.addProperty(newPropName.getText(), init.newInstance(initParams));
+ mPropertyModel.addProperty(newPropName.getText(), init.newInstance(initParams), false);
} catch (Exception ex) {
MainFrame.exceptionDialog(ex);
}