ColorScaleChooser.java

00001 /*
00002  * ColorScaleChooser.java
00003  */
00004 package DisplayGUI;
00005 
00006 import java.awt.Color;
00007 import java.util.Vector;
00008 import java.util.List;
00009 import java.util.ArrayList;
00010 import javax.swing.ListSelectionModel;
00011 import javax.swing.table.TableModel;
00012 import javax.swing.event.*;
00013 import java.util.*;
00014 
00015 public class ColorScaleChooser extends javax.swing.JFrame implements displayParams,ListSelectionListener,TestDataInfo {
00016 
00017     private javax.swing.JTable table;
00018     private javax.swing.ButtonGroup buttonGroup1;
00019     private javax.swing.JCheckBox isGradientPaint,isLogScale,isPersisted;
00020     private javax.swing.JLabel title;
00021     private javax.swing.JScrollPane scrollPane;
00022     private javax.swing.JButton defaultButton, applyButton, closeButton;
00023     private javax.swing.JMenuItem removeItem, addItem;
00024     private javax.swing.JMenu dataPopupMenu;
00025 
00026     ColorScale thisColorScale;
00027     MyTableModel tableModel = new MyTableModel();
00028     ListSelectionModel rowSM;
00029     ColorScaleManager csm = ColorScaleManager.getInstance();
00030     boolean editValues;
00031 
00032     gui guiControl;
00033 
00034     public ColorScaleChooser(gui parent, ColorScale colorScale) {
00035         super("Edit Colour Scale");
00036         guiControl=parent;
00037         thisColorScale = new ColorScale(colorScale);
00038 
00039         checkEditValues();
00040 
00041         initComponents();
00042         fillTable();
00043         getTableEditorMenu();
00044         table.addMouseListener(new tableMouseAdapter());
00045         removeItem.setEnabled(false);
00046         addWindowListener(new java.awt.event.WindowAdapter() {
00047             public void windowClosing(java.awt.event.WindowEvent evt) {
00048                 closeDialog(evt);
00049             }
00050         });
00051         addItem.setEnabled(editValues);
00052     }
00053 
00054     private void initComponents() {
00055 
00056         getContentPane().setBackground(backgroundColor);
00057 
00058         table = new javax.swing.JTable(tableModel);
00059 //        table.setPreferredScrollableViewportSize(new Dimension(300, 70));
00060 
00061         //Create the scroll pane and add the table to it.
00062         scrollPane = new javax.swing.JScrollPane(table);
00063 
00064         //Set up renderer and editor for the Favorite Color column.
00065 
00066         table.setDefaultRenderer(Color.class,new ColorRenderer(true));
00067 
00068         table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
00069         rowSM = table.getSelectionModel();
00070         rowSM.addListSelectionListener(this);
00071 
00072         java.awt.GridBagConstraints gridBagConstraints;
00073 
00074 //        buttonGroup1 = new javax.swing.ButtonGroup();
00075         title = new javax.swing.JLabel();
00076         isGradientPaint = new javax.swing.JCheckBox();
00077         isLogScale = new javax.swing.JCheckBox();
00078         isPersisted = new javax.swing.JCheckBox();
00079 
00080         applyButton = new javax.swing.JButton();
00081         defaultButton = new javax.swing.JButton();
00082         closeButton = new javax.swing.JButton();
00083 
00084         getContentPane().setLayout(new java.awt.GridBagLayout());
00085 
00086         addWindowListener(new java.awt.event.WindowAdapter() {
00087             public void windowClosing(java.awt.event.WindowEvent evt) {
00088                 closeDialog(evt);
00089             }
00090         });
00091 
00092         title.setFont(displayBoldFont);
00093         title.setForeground(darkBlueColor);
00094         gridBagConstraints = new java.awt.GridBagConstraints();
00095         gridBagConstraints.gridx = 0;
00096         gridBagConstraints.gridy = 0;
00097         gridBagConstraints.gridwidth = 3;
00098         gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
00099         gridBagConstraints.weighty = 0.1;
00100         getContentPane().add(title, gridBagConstraints);
00101 
00102 
00103         scrollPane.setBackground(new java.awt.Color(255, 255, 255));
00104         table.setBackground(new java.awt.Color(255, 255, 255));
00105         scrollPane.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
00106         scrollPane.setMaximumSize(new java.awt.Dimension(500, 500));
00107         scrollPane.setMinimumSize(new java.awt.Dimension(50, 50));
00108         scrollPane.setPreferredSize(new java.awt.Dimension(240, 200));
00109         gridBagConstraints = new java.awt.GridBagConstraints();
00110         gridBagConstraints.gridx = 0;
00111         gridBagConstraints.gridy = 1;
00112         gridBagConstraints.gridwidth = 3;
00113         gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3);
00114         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
00115         gridBagConstraints.weighty = 0.8;
00116         getContentPane().add(scrollPane, gridBagConstraints);
00117 
00118         isGradientPaint.setText("Gradient Scale");
00119         isGradientPaint.setFont(displayScaleFont);
00120         isGradientPaint.setEnabled(editValues);
00121         isGradientPaint.setBackground(backgroundColor);
00122         isGradientPaint.addActionListener(new java.awt.event.ActionListener() {
00123             public void actionPerformed(java.awt.event.ActionEvent evt) {
00124                 thisColorScale.setGradientPaint(isGradientPaint.isSelected());
00125                 if(!isGradientPaint.isSelected()) {
00126                     isLogScale.setSelected(false);
00127                     thisColorScale.setLogScale(isLogScale.isSelected());
00128                    isLogScale.setEnabled(false);
00129                     }
00130                  else isLogScale.setEnabled(true);
00131             }
00132         });
00133 
00134         gridBagConstraints = new java.awt.GridBagConstraints();
00135         gridBagConstraints.gridx = 0;
00136         gridBagConstraints.gridy = 2;
00137         gridBagConstraints.weighty = 0.1;
00138         gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
00139         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
00140         getContentPane().add(isGradientPaint, gridBagConstraints);
00141 
00142         isLogScale.setSelected(true);
00143         isLogScale.setText("Log Scale");
00144         isLogScale.setFont(displayScaleFont);
00145         isLogScale.setEnabled(editValues);
00146         isLogScale.setBackground(backgroundColor);
00147         isLogScale.addActionListener(new java.awt.event.ActionListener() {
00148             public void actionPerformed(java.awt.event.ActionEvent evt) {
00149               thisColorScale.setLogScale(isLogScale.isSelected());
00150             }
00151         });
00152         gridBagConstraints = new java.awt.GridBagConstraints();
00153         gridBagConstraints.gridx = 1;
00154         gridBagConstraints.gridy = 2;
00155         gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
00156         gridBagConstraints.anchor = java.awt.GridBagConstraints.CENTER;
00157         getContentPane().add(isLogScale, gridBagConstraints);
00158 
00159         isPersisted.setSelected(true);
00160         isPersisted.setText("Persist changes");
00161         isPersisted.setFont(displayScaleFont);
00162         isPersisted.setBackground(backgroundColor);
00163         gridBagConstraints = new java.awt.GridBagConstraints();
00164         gridBagConstraints.gridx = 2;
00165         gridBagConstraints.gridy = 2;
00166         gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
00167         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00168         getContentPane().add(isPersisted, gridBagConstraints);
00169 
00170         applyButton.setText("Apply");
00171         applyButton.setFont(displayScaleFont);
00172         applyButton.addActionListener(new java.awt.event.ActionListener() {
00173             public void actionPerformed(java.awt.event.ActionEvent evt) {
00174                   if(thisColorScale.getNoPoints()<2) {
00175                      javax.swing.JOptionPane.showMessageDialog(null,"There must be at least 2 points in the scale","Invalid Color Scale",javax.swing.JOptionPane.WARNING_MESSAGE);
00176                      return;
00177                    }                      
00178                   csm.updateScale(new ColorScale(thisColorScale), isPersisted.isSelected());
00179                   guiControl.colorScalePane.setColorScale();
00180                   guiControl.displayPane.setDisplayColors();
00181                   guiControl.displayPane.refreshDisplay();
00182             }
00183         });
00184         gridBagConstraints = new java.awt.GridBagConstraints();
00185         gridBagConstraints.gridx = 0;
00186         gridBagConstraints.gridy = 3;
00187         gridBagConstraints.weightx = 0.3;
00188         gridBagConstraints.weighty = 0.1;
00189         gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
00190         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00191         getContentPane().add(applyButton, gridBagConstraints);
00192 
00193         defaultButton.setText("Default");
00194         defaultButton.setFont(displayScaleFont);
00195         defaultButton.addActionListener(new java.awt.event.ActionListener() {
00196             public void actionPerformed(java.awt.event.ActionEvent evt) {
00197                   thisColorScale = new ColorScale(csm.getDefaultColorScale(thisColorScale.getTitle()));
00198                   fillTable();
00199             }
00200         });
00201         gridBagConstraints = new java.awt.GridBagConstraints();
00202         gridBagConstraints.gridx = 1;
00203         gridBagConstraints.gridy = 3;
00204        gridBagConstraints.weightx = 0.3;
00205         gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
00206         gridBagConstraints.anchor = java.awt.GridBagConstraints.CENTER;
00207         getContentPane().add(defaultButton, gridBagConstraints);
00208 
00209         closeButton.setText("Close");
00210         closeButton.setFont(displayScaleFont);
00211         closeButton.addActionListener(new java.awt.event.ActionListener() {
00212             public void actionPerformed(java.awt.event.ActionEvent evt) {
00213                 closeDialog(null);
00214             }
00215         });
00216         gridBagConstraints = new java.awt.GridBagConstraints();
00217         gridBagConstraints.gridx = 2;
00218         gridBagConstraints.gridy = 3;
00219        gridBagConstraints.weightx = 0.4;
00220         gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3);
00221         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
00222         getContentPane().add(closeButton, gridBagConstraints);
00223 
00224 
00225         pack();
00226     }
00227 
00228 private void fillTable() {
00229 
00230      tableModel.reTable();
00231 
00232      isGradientPaint.setSelected(thisColorScale.isGradientPaint());
00233      isLogScale.setSelected(thisColorScale.isLogScale());
00234      title.setText("Edit: "+thisColorScale.getTitle());
00235 
00236      }
00237 
00238 public void showNewScale(ColorScale colorScale) {
00239      thisColorScale=new ColorScale(colorScale);
00240      checkEditValues();
00241      removeItem.setEnabled(false);
00242      addItem.setEnabled(editValues);
00243      isLogScale.setEnabled(editValues);
00244      isGradientPaint.setEnabled(editValues);
00245      fillTable();
00246      }
00247 
00248     private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
00249         setVisible(false);
00250     }
00251 
00252 public class MyTableModel extends javax.swing.table.AbstractTableModel {
00253     private String[] columnNames = {"Data","Label","Color"};
00254 
00255     public MyTableModel() {
00256          }
00257 
00258 
00259     public void reTable() {
00260          fireTableChanged(null); // Tell the listeners a new table has arrived.
00261          return ;
00262     }
00263 
00264 
00265 
00266     //  Now the Implementation of the TableModel Interface
00267    
00268     public String getColumnName(int column) {
00269         if (columnNames[column] != null) {
00270             return columnNames[column];
00271         } else {
00272             return "";
00273         }
00274     }
00275 
00276     public Class getColumnClass(int column) {
00277             return getValueAt(0, column).getClass();
00278 
00279    }
00280 
00281     public boolean isCellEditable(int row, int column) {
00282             return false; 
00283     }
00284 
00285     public int getColumnCount() {
00286         return columnNames.length;
00287     }
00288 
00289     public int getRowCount() {
00290         return thisColorScale.getNoPoints();
00291     }
00292 
00293     public Object getValueAt(int row, int column) {
00294 
00295         ColorScalePoint scalePoint = thisColorScale.getColorScalePoint(row);
00296         return scalePoint.getData(column);
00297     }
00298 
00299 
00300     public void setValueAt(Object value, int row, int column) {
00301         ColorScalePoint scalePoint = thisColorScale.getColorScalePoint(row);
00302         scalePoint.setData(column,value); 
00303     }
00304 
00305 
00306 
00307 }
00308 
00309     class tableMouseAdapter extends java.awt.event.MouseAdapter {
00310             public void mouseClicked(java.awt.event.MouseEvent e) {
00311                int rowSelect = table.rowAtPoint(new java.awt.Point(e.getX(),e.getY()));
00312                rowSM.setSelectionInterval(rowSelect,rowSelect); 
00313                switch(e.getModifiers()) {
00314                  case java.awt.event.InputEvent.BUTTON1_MASK: 
00315                        ScalePointEditor spe = new ScalePointEditor(ColorScaleChooser.this,true,thisColorScale.getColorScalePoint(rowSelect),editValues);
00316                        ColorScalePoint newPoint = spe.getColorScalePoint();
00317                        if(newPoint!=null) {
00318                           thisColorScale.setColorScalePoint(rowSelect,newPoint);
00319                           fillTable();
00320                           }
00321                        break;
00322                  case java.awt.event.InputEvent.BUTTON2_MASK:
00323                  case java.awt.event.InputEvent.BUTTON3_MASK:
00324                        javax.swing.JPopupMenu pMenu = dataPopupMenu.getPopupMenu();
00325                        pMenu.show(e.getComponent(),e.getX(),e.getY());
00326                        pMenu.setInvoker(dataPopupMenu); 
00327                        break;
00328                  default:
00329                  }
00330             }
00331     }
00332 
00333    private void getTableEditorMenu() {
00334        dataPopupMenu = new javax.swing.JMenu("Table Editor");
00335        dataPopupMenu.setFont(menuFont);
00336 
00337        removeItem = new javax.swing.JMenuItem("Remove point");
00338        removeItem.setFont(menuFont);
00339        dataPopupMenu.add(removeItem);
00340        removeItem.addActionListener(new java.awt.event.ActionListener() {
00341              public void actionPerformed(java.awt.event.ActionEvent evt) {
00342                thisColorScale.removePoint(rowSM.getMinSelectionIndex());
00343                fillTable();
00344                      }
00345           });
00346        addItem = new javax.swing.JMenuItem("Add new point...");
00347        addItem.setFont(menuFont);
00348        dataPopupMenu.add(addItem);
00349        addItem.addActionListener(new java.awt.event.ActionListener() {
00350              public void actionPerformed(java.awt.event.ActionEvent evt) {
00351                     ScalePointEditor spe = new ScalePointEditor(ColorScaleChooser.this,true,null,editValues);
00352                     ColorScalePoint newPoint = spe.getColorScalePoint();
00353                     if(newPoint!=null) {
00354                           thisColorScale.add(newPoint);
00355                           fillTable();
00356                           }
00357                      }
00358 
00359           });  
00360 
00361        }
00362 
00363     public void valueChanged(ListSelectionEvent e) {
00364 
00365 
00366               if (e.getValueIsAdjusting()) return;
00367 
00368               ListSelectionModel lsm = (ListSelectionModel)e.getSource();
00369 
00370               if (lsm.isSelectionEmpty()) {
00371                  //no rows are selected
00372                    removeItem.setEnabled(false);
00373                    return;
00374                    }
00375 
00376               removeItem.setEnabled(editValues);
00377           }
00378    private void checkEditValues() {
00379         int status = guiControl.displayStatus.getStatus();
00380 
00381         editValues = (status==DisplayStatus.TEST_DATA || status==DisplayStatus.SCTDB_DATA || status==DisplayStatus.DCS_DATA || status==DisplayStatus.SCTDB_RODDAQ_DATA);
00382         if(editValues && status!=DisplayStatus.DCS_DATA) editValues = (guiControl.selectorPane.getDisplayParameterIndex()>0);
00383         TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
00384         if(testSelection!=null && testSelection.getTestIndex()==TEST_FULLBYPASS) editValues = (guiControl.selectorPane.getDisplayParameterIndex()<6);
00385 //        if(editValues && status==DisplayStatus.TEST_DATA) editValues = (guiControl.selectorPane.getDisplayParameterIndex()<=4); // Token and RToken comments
00386         }
00387 
00388 
00389 
00390 }

Generated on Mon Feb 6 14:12:09 2006 for SCT DAQ/DCS Software - Java by  doxygen 1.4.6