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); } }