summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/collection/gui/view
diff options
context:
space:
mode:
authorAndrew Branson <andrew@andrewbranson.net>2011-06-21 15:46:02 +0200
committerAndrew Branson <andrew@andrewbranson.net>2011-06-21 15:46:02 +0200
commit254ee6f47eebfc00462c10756a92066e82cc1a96 (patch)
tree8273ff95c704e6faa3f92b4711253427b9ba0481 /source/com/c2kernel/collection/gui/view
Initial commit2.2
Diffstat (limited to 'source/com/c2kernel/collection/gui/view')
-rwxr-xr-xsource/com/c2kernel/collection/gui/view/AggregationMemberRenderer.java124
-rwxr-xr-xsource/com/c2kernel/collection/gui/view/CollectionFrame.java41
-rwxr-xr-xsource/com/c2kernel/collection/gui/view/PropertyPanel.java36
-rwxr-xr-xsource/com/c2kernel/collection/gui/view/SelectedMemberPanel.java150
4 files changed, 351 insertions, 0 deletions
diff --git a/source/com/c2kernel/collection/gui/view/AggregationMemberRenderer.java b/source/com/c2kernel/collection/gui/view/AggregationMemberRenderer.java
new file mode 100755
index 0000000..0d3cb03
--- /dev/null
+++ b/source/com/c2kernel/collection/gui/view/AggregationMemberRenderer.java
@@ -0,0 +1,124 @@
+package com.c2kernel.collection.gui.view;
+
+import java.awt.FontMetrics;
+import java.awt.Graphics2D;
+
+import com.c2kernel.collection.Aggregation;
+import com.c2kernel.collection.AggregationMember;
+import com.c2kernel.graph.model.GraphPoint;
+import com.c2kernel.graph.model.Vertex;
+import com.c2kernel.graph.view.VertexRenderer;
+import com.c2kernel.utils.Logger;
+
+/**
+ * @version $Revision: 1.24 $ $Date: 2005/12/01 14:23:15 $
+ * @author $Author: abranson $
+ */
+
+public class AggregationMemberRenderer implements VertexRenderer
+{
+
+ private Aggregation mAggregation = null;
+
+ public AggregationMemberRenderer()
+ {
+ }
+
+ public void setAggregation(Aggregation agg)
+ {
+ mAggregation = agg;
+ }
+
+
+ public void draw(Graphics2D g2d, Vertex vertex)
+ {
+ GraphPoint centre = vertex.getCentrePoint();
+ GraphPoint[] outline = vertex.getOutlinePoints();
+ FontMetrics metrics = g2d.getFontMetrics();
+
+ AggregationMember memberPair = mAggregation.getMemberPair(vertex.getID());
+
+ try
+ {
+ String name = memberPair.getEntityName();
+
+ g2d.drawString( name,
+ centre.x-metrics.stringWidth(name)/2,
+ topYOfOutline(outline) );
+
+ g2d.drawImage
+ (
+ memberPair.getImage(),
+ centre.x - 8,
+ centre.y - 8,
+ null
+ );
+
+
+
+ // Draw the outline of the vertex
+ if(outline.length > 1)
+ {
+ for(int i=0; i<outline.length-1; i++)
+ {
+ g2d.drawLine
+ (
+ outline[i].x,
+ outline[i].y,
+ outline[i+1].x,
+ outline[i+1].y
+ );
+ }
+
+ g2d.drawLine
+ (
+ outline[outline.length-1].x,
+ outline[outline.length-1].y,
+ outline[0].x,
+ outline[0].y
+ );
+ }
+
+
+ }
+ catch (Exception ex)
+ {
+ Logger.error("AggregationMemberRenderer::draw() " + ex);
+ }
+ }
+
+
+ int topYOfOutline(GraphPoint[] outline)
+ {
+ int topY = outline[0].y;
+ int i = 0;
+
+
+ for(i=1; i<outline.length; i++)
+ {
+ if(outline[i].y < topY)
+ {
+ topY = outline[i].y;
+ }
+ }
+
+ return topY;
+ }
+
+ int bottomYOfOutline(GraphPoint[] outline)
+ {
+ int bottomY = outline[0].y;
+ int i = 0;
+
+
+ for(i=1; i<outline.length; i++)
+ {
+ if(outline[i].y > bottomY)
+ {
+ bottomY = outline[i].y;
+ }
+ }
+
+ return bottomY;
+ }
+}
diff --git a/source/com/c2kernel/collection/gui/view/CollectionFrame.java b/source/com/c2kernel/collection/gui/view/CollectionFrame.java
new file mode 100755
index 0000000..2d40436
--- /dev/null
+++ b/source/com/c2kernel/collection/gui/view/CollectionFrame.java
@@ -0,0 +1,41 @@
+package com.c2kernel.collection.gui.view;
+
+import java.awt.GridLayout;
+
+import javax.swing.JFrame;
+
+import com.c2kernel.collection.Aggregation;
+import com.c2kernel.gui.tabs.CollectionPane;
+
+
+/**
+ * @version $Revision: 1.10 $ $Date: 2003/04/06 15:06:36 $
+ * @author $Author: abranson $
+ */
+
+public class CollectionFrame extends JFrame
+{
+
+ private CollectionPane mCollectionPane = new CollectionPane();
+
+ public CollectionFrame()
+ {
+ createLayout();
+ }
+
+ public void setAggregation(Aggregation aggregation)
+ {
+ mCollectionPane.add(aggregation);
+ }
+
+
+ private void createLayout()
+ {
+ getContentPane().setLayout(new GridLayout(1, 1));
+
+ getContentPane().add(mCollectionPane);
+
+ setSize(1000, 1000);
+ setVisible(true);
+ }
+}
diff --git a/source/com/c2kernel/collection/gui/view/PropertyPanel.java b/source/com/c2kernel/collection/gui/view/PropertyPanel.java
new file mode 100755
index 0000000..903ddf9
--- /dev/null
+++ b/source/com/c2kernel/collection/gui/view/PropertyPanel.java
@@ -0,0 +1,36 @@
+package com.c2kernel.collection.gui.view;
+
+import com.c2kernel.collection.AggregationMember;
+import com.c2kernel.collection.Collection;
+import com.c2kernel.collection.CollectionMember;
+import com.c2kernel.common.ObjectNotFoundException;
+import com.c2kernel.graph.model.Vertex;
+import com.c2kernel.graph.view.VertexPropertyPanel;
+
+public class PropertyPanel extends VertexPropertyPanel {
+
+ Collection mCollection;
+
+ public PropertyPanel() {
+ super();
+ }
+
+ public void setCollection(Collection collection) {
+ mCollection = collection;
+ }
+
+ public void setVertex(Vertex vert) {
+ try {
+ CollectionMember newMember = mCollection.getMember(vert.getID());
+ if (newMember instanceof AggregationMember) {
+ super.setVertex((AggregationMember)newMember);
+ return;
+ }
+ else
+ clear();
+ } catch (ObjectNotFoundException ex) {
+ clear();
+ selObjClass.setText("No Collection Member object found");
+ }
+ }
+}
diff --git a/source/com/c2kernel/collection/gui/view/SelectedMemberPanel.java b/source/com/c2kernel/collection/gui/view/SelectedMemberPanel.java
new file mode 100755
index 0000000..5e66c1e
--- /dev/null
+++ b/source/com/c2kernel/collection/gui/view/SelectedMemberPanel.java
@@ -0,0 +1,150 @@
+package com.c2kernel.collection.gui.view;
+
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.*;
+
+import com.c2kernel.collection.AggregationMember;
+import com.c2kernel.collection.MembershipException;
+import com.c2kernel.entity.proxy.EntityProxy;
+import com.c2kernel.graph.model.Vertex;
+import com.c2kernel.graph.view.SelectedVertexPanel;
+import com.c2kernel.gui.DomainKeyConsumer;
+import com.c2kernel.gui.MainFrame;
+import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.lookup.EntityPath;
+import com.c2kernel.process.Gateway;
+import com.c2kernel.utils.Language;
+
+/**************************************************************************
+ *
+ * $Revision: 1.10 $
+ * $Date: 2005/05/12 10:12:52 $
+ *
+ * Copyright (C) 2003 CERN - European Organization for Nuclear Research
+ * All rights reserved.
+ **************************************************************************/
+
+
+public class SelectedMemberPanel extends SelectedVertexPanel implements DomainKeyConsumer {
+
+ JLabel slotNumber = new JLabel();
+ JTextField memberKey = new JTextField(14);
+
+ JButton findButton = new JButton(Language.translate("Find"));
+ JToggleButton changeButton = new JToggleButton(Language.translate("Change"));
+ JButton removeButton = new JButton(Language.translate("Remove"));
+
+ SelectedMemberPanel me;
+ AggregationMember selectedMember = null;
+
+ public SelectedMemberPanel() {
+ me=this;
+ setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
+
+ JPanel attrs = new JPanel(new GridLayout(3,2));
+ attrs.add(new JLabel(Language.translate("Slot Number:")));
+ attrs.add(slotNumber);
+ attrs.add(new JLabel(Language.translate("Assigned Member:")));
+ attrs.add(memberKey);
+ memberKey.setEditable(false);
+
+ add(attrs);
+ add(Box.createVerticalStrut(10));
+
+ findButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent ae) {
+ String code = memberKey.getText();
+ if (code == null || code.length() == 0)
+ code = memberKey.getText().replace('/',' ');
+ MainFrame.itemFinder.pushNewKey(code);
+ }
+ });
+
+ changeButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent ae) {
+ if (changeButton.getModel().isSelected()) {
+ MainFrame.status.setText(Language.translate("Please scan or type your barcode to assign in the top field"));
+ MainFrame.itemFinder.setConsumer(me, "Assign");
+ findButton.setEnabled(false);
+ }
+ else {
+ MainFrame.status.setText("");
+ MainFrame.itemFinder.clearConsumer(me);
+ if (selectedMember.getEntityKey() > -1) findButton.setEnabled(true);
+ }
+ }
+ });
+
+ removeButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent ae) {
+ selectedMember.clearEntity();
+ selectedMember.getProperties().remove("Name");
+ select(selectedMember);
+ }
+ });
+
+ Box buttonBox = Box.createHorizontalBox();
+ buttonBox.add(findButton);
+ if (MainFrame.isAdmin) {
+ buttonBox.add(changeButton);
+ buttonBox.add(removeButton);
+ }
+
+ setButtons(false);
+ add(buttonBox);
+ }
+
+ public void select(Vertex vert) {
+ selectedMember = (AggregationMember)vert;
+ slotNumber.setText(String.valueOf(vert.getID()));
+ int memberId = selectedMember.getEntityKey();
+ String name = "Empty";
+ try {
+ EntityProxy member = Gateway.getProxyManager().getProxy(new EntityPath(memberId));
+ name = member.getName();
+ } catch (Exception e) { }
+ memberKey.setText(name);
+ setButtons(true);
+
+ revalidate();
+ }
+
+ public void clear() {
+ slotNumber.setText("");
+ memberKey.setText("");
+ setButtons(false);
+ revalidate();
+ }
+
+ public void setButtons(boolean state) {
+ findButton.setEnabled(state);
+ changeButton.getModel().setSelected(false);
+ changeButton.setEnabled(state);
+ removeButton.setEnabled(state);
+ MainFrame.itemFinder.clearConsumer(me);
+ }
+ /**
+ *
+ */
+ public void push(DomainPath key) {
+ MainFrame.status.setText("Assigning entity "+key.getSysKey()+" to slot "+selectedMember.getID());
+ try {
+ selectedMember.assignEntity(key.getSysKey());
+ select(selectedMember);
+ } catch (MembershipException ex) {
+ JOptionPane.showMessageDialog(null, "Product does not fit in this slot", "Error", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+
+ /**
+ *
+ */
+ public void push(String name) {
+ JOptionPane.showMessageDialog(null, "Product is not known in this centre", "Error", JOptionPane.ERROR_MESSAGE);
+ }
+
+}
+