Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

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

Generated on Thu Jul 15 09:55:40 2004 for SCT DAQ/DCS Software - Java by doxygen 1.3.5