00001 package GuiComponents.SctConf;
00002
00003 import javax.swing.*;
00004 import javax.swing.event.*;
00005 import java.awt.*;
00006 import java.awt.event.*;
00007
00008 import org.omg.CORBA.IntHolder;
00009 import org.omg.CORBA.StringHolder;
00010
00011 import sctConf.*;
00012
00013 public class PhysicalView extends JPanel {
00014 sctConf.Configuration config;
00015
00016 JComboBox barrel;
00017 JComboBox rowStart;
00018 JComboBox rowEnd;
00019
00020 JPanel centre;
00021
00022 public PhysicalView(sctConf.Configuration conf) {
00023 config = conf;
00024
00025 setLayout(new BorderLayout());
00026
00027 JPanel buttons = new JPanel();
00028
00029 JButton close = new JButton("Close");
00030 close.addActionListener(new ActionListener() {
00031 public void actionPerformed(ActionEvent e) {
00032 ((Window)getTopLevelAncestor()).dispose();
00033 }
00034 });
00035 buttons.add(close);
00036
00037 add(buttons, BorderLayout.SOUTH);
00038
00039 JPanel combos = new JPanel();
00040
00041 Integer [] barrelList = {new Integer(3), new Integer(4), new Integer(5), new Integer(6)};
00042
00043 barrel = new JComboBox(barrelList);
00044 barrel.setSelectedItem(new Integer(3));
00045 barrel.addActionListener(new ActionListener() {
00046 public void actionPerformed(ActionEvent e) {
00047
00048 ((ComboModel)rowStart.getModel()).fireListeners();
00049 ((ComboModel)rowEnd.getModel()).fireListeners();
00050 updateDisplay();
00051 }
00052 });
00053 combos.add(barrel);
00054
00055 rowStart = new JComboBox(new ComboModel(0));
00056
00057 rowStart.addActionListener(new ActionListener() {
00058 public void actionPerformed(ActionEvent e) {
00059
00060 ((ComboModel)rowEnd.getModel()).fireListeners();
00061 updateDisplay();
00062 }
00063 });
00064 combos.add(rowStart);
00065
00066 rowEnd = new JComboBox(new ComboModel(3));
00067
00068 rowEnd.addActionListener(new ActionListener() {
00069 public void actionPerformed(ActionEvent e) {
00070
00071 ((ComboModel)rowStart.getModel()).fireListeners();
00072 updateDisplay();
00073 }
00074 });
00075 combos.add(rowEnd);
00076
00077 add(combos, BorderLayout.NORTH);
00078
00079 centre = new JPanel();
00080 updateDisplay();
00081 add(centre, BorderLayout.CENTER);
00082 }
00083
00084 public void updateDisplay() {
00085 centre.removeAll();
00086
00087 centre.setLayout(new GridLayout(1, 4));
00088
00089 JPanel barrelPanel = new JPanel();
00090 barrelPanel.setLayout(new GridLayout(0, 12));
00091
00092 int b = ((Integer)barrel.getSelectedItem()).intValue();
00093 int start = ((Integer)rowStart.getSelectedItem()).intValue();
00094 int end = ((Integer)rowEnd.getSelectedItem()).intValue();
00095
00096 for(int r=start; r<end; r++) {
00097 for(int i=-6; i<=6; i++) {
00098 if(i == 0) continue;
00099
00100 StringHolder serial = new StringHolder();
00101
00102 try {
00103 IntHolder MUR = new IntHolder();
00104 IntHolder mod = new IntHolder();
00105
00106 serial = new StringHolder();
00107
00108 config.translateFromBarrel(b, r, i, MUR, mod);
00109 config.translateToSN(MUR.value, mod.value, serial);
00110 } catch(ConfigurationException e) {
00111 serial.value = "position " + i;
00112 }
00113
00114 barrelPanel.add(new JLabel(serial.value + " "));
00115 }
00116 }
00117
00118 centre.add(barrelPanel);
00119 centre.invalidate();
00120 barrelPanel.doLayout();
00121 centre.repaint();
00122 }
00123
00124 public class ComboModel implements ComboBoxModel {
00125 Integer selection;
00126 java.util.Vector listeners;
00127
00128 ComboModel(int i) {
00129 selection = new Integer(i);
00130 listeners = new java.util.Vector();
00131 }
00132
00133 public Object getSelectedItem() {
00134 return selection;
00135 }
00136
00137 public void setSelectedItem(Object select) {
00138 selection = (Integer)select;
00139 }
00140
00141 public void addListDataListener(ListDataListener l) {
00142 listeners.add(l);
00143 }
00144
00145 public Object getElementAt(int index) {
00146 return new Integer(index);
00147 }
00148 public int getSize() {
00149 int numRows = 0;
00150 switch(((Integer)barrel.getSelectedItem()).intValue()) {
00151 case 3: numRows = 32; break;
00152 case 4: numRows = 40; break;
00153 case 5: numRows = 48; break;
00154 case 6: numRows = 56; break;
00155 }
00156
00157 return numRows;
00158 }
00159
00160 public void fireListeners() {
00161 for(int i=0; i<listeners.size(); i++) {
00162 ListDataEvent event = new ListDataEvent(this, ListDataEvent.CONTENTS_CHANGED, 0, 56);
00163 ((ListDataListener)listeners.get(i)).contentsChanged(event);
00164 }
00165 }
00166
00167 public void removeListDataListener(ListDataListener l) {
00168 listeners.remove(l);
00169 }
00170 }
00171 }