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

ColorScalePane.java

00001 package DisplayGUI;
00002 
00003 import java.awt.*;
00004 import java.awt.event.*;
00005 import java.awt.image.*;
00006 import javax.swing.*;
00007 import java.awt.Graphics2D.*;
00008 import java.awt.geom.*;
00009 import java.util.Hashtable;
00010 import java.util.Enumeration;
00011 import java.util.Vector;
00012 
00013 class ColorScalePane extends JPanel implements displayParams {
00014     gui guiControl;
00015  
00016         FontMetrics metrics;
00017 
00018         int maxWidth,maxHeight;
00019         Dimension dim;
00020         Rectangle area;
00021         Rectangle2D.Double drawRect;
00022         GradientPaint colorGradient;
00023         boolean firstTime=true;
00024         int x,y;
00025         
00026         ColorScale colorScale;
00027         String scaleDescription;
00028 
00029         JMenu dataPopupMenu;
00030         ColorScaleManager csm;
00031 
00032         ColorScaleChooser colorScaleChooser;
00033 
00034         public ColorScalePane(gui parent){
00035           guiControl=parent;
00036           colorScale=null;
00037           setBackground(backgroundColor);
00038           dim = getSize();
00039           maxWidth = (int)dim.getWidth();
00040 
00041           setMinimumSize(new Dimension(300,60));
00042           setPreferredSize(new Dimension(300,60));
00043           setBorder(new javax.swing.border.TitledBorder(null, "Display Colour Scale", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 0, 11), new java.awt.Color(0, 0, 153)));
00044 
00045           csm = ColorScaleManager.getInstance();
00046 
00047           getColorEditorMenu();
00048           addMouseListener(new colorScaleMouseAdapter());
00049 
00050     }
00051 
00052 
00053     public void setColorScale() {
00054         TestSelection testSelection = guiControl.tablesDisplayPane.getTestSelection();
00055         int testIndex = (testSelection!=null) ? testSelection.getTestIndex() : -1;
00056         int noScans = (testSelection!=null) ? testSelection.getNoScans() : 0;
00057         String selectedParam = guiControl.selectorPane.getDisplayParameter();
00058         if(selectedParam!=null && selectedParam.equals("Analysed Data")) noScans=1;
00059         int parameterIndex = guiControl.selectorPane.getDisplayParameterIndex();
00060         int mouseOption = guiControl.selectorPane.getMouseClickIndex();
00061         int displayOption = guiControl.displayPane.getDisplayOption();
00062         int display = guiControl.displayStatus.getStatus();
00063 
00064         colorScale = csm.getColorScale(guiControl.displayStatus.getStatus(),testIndex,parameterIndex,mouseOption,displayOption);
00065 
00066         if(colorScale!=null && display==DisplayStatus.IS_MONITOR) {
00067           switch(noScans) {
00068             case 0:
00069                colorScale=null;
00070                break;
00071             case 1:
00072                colorScale.setLastPoint(1);
00073                colorScale.setGradientPaint(false);
00074                break;
00075             default:
00076                colorScale.setLastPoint(noScans);
00077                colorScale.setGradientPaint(true);
00078                }
00079             }
00080 
00081 
00082         repaint();
00083      }
00084     public void setColorScale(ColorScale colorScale) {
00085         this.colorScale=colorScale;
00086         repaint();
00087         } 
00088     public ColorScale getColorScale() {
00089          return colorScale;
00090         } 
00091     
00092     // Handles the event of the user pressing down the mouse button.
00093     public void mousePressed(MouseEvent e){   
00094     }
00095 
00096     // Handles the event of a user dragging the mouse while holding
00097     // down the mouse button.
00098     public void mouseDragged(MouseEvent e){
00099     }
00100 
00101     // Handles the event of a user releasing the mouse button.
00102     public void mouseReleased(MouseEvent e){
00103 
00104     }
00105        
00106      // This method is required by MouseListener.
00107      public void mouseMoved(MouseEvent e){ 
00108 
00109      }
00110 
00111      // These methods are required by MouseMotionListener.
00112      public void mouseClicked(MouseEvent e){
00113        }
00114 
00115      public void mouseExited(MouseEvent e){}
00116      public void mouseEntered(MouseEvent e){}
00117                          
00118      // Updates the coordinates representing the location of the current rectangle.
00119 
00120 
00121     public void paintComponent(Graphics g){
00122 
00123         super.paintComponent(g);
00124         
00125 
00126         
00127         Graphics2D g2 = (Graphics2D)g;
00128         g2.setStroke(new BasicStroke(1.0f));
00129 
00130         if ( firstTime ) {
00131             dim = getSize();
00132             area = new Rectangle(dim);
00133             maxWidth = (int)dim.getWidth();
00134             maxHeight = (int)dim.getHeight();
00135             firstTime = false;
00136             g2.setFont(displayTextFont);
00137             metrics = g2.getFontMetrics();
00138             x = (int)(maxWidth/2.)-colorBoxWidth/2;
00139             y = (int)(maxHeight/2.)-colorBoxHeight/2;
00140 
00141 
00142         }
00143         // Clears the rectangle that was previously drawn.
00144         g2.setPaint(Color.white);
00145         g2.fill(area);
00146         
00147         if(colorScale!=null) {
00148            colorScale.drawColorScale(g2, x, y);
00149            scaleDescription = colorScale.getTitle();
00150            g2.setFont(displayScaleFont);
00151            g2.setPaint(darkBlueColor);
00152            metrics = g2.getFontMetrics();
00153            String thisString = "Scale: "+scaleDescription;
00154            int stringWidth = metrics.stringWidth(thisString);
00155            int stringHeight = metrics.getHeight();
00156            int thisX = (int)(maxWidth/2.)-stringWidth/2;
00157            int thisY = (int)(maxHeight/2.)+ colorBoxHeight/2 + stringHeight + 2;
00158            g2.drawString(thisString,thisX,thisY);
00159            }
00160 
00161 
00162     }
00163 
00164     class colorScaleMouseAdapter extends java.awt.event.MouseAdapter {
00165             public void mouseClicked(java.awt.event.MouseEvent e) {
00166                switch(e.getModifiers()) {
00167                  case java.awt.event.InputEvent.BUTTON2_MASK:
00168                  case java.awt.event.InputEvent.BUTTON3_MASK:             
00169                    JPopupMenu pMenu = dataPopupMenu.getPopupMenu();
00170                    pMenu.show(e.getComponent(),e.getX(),e.getY());
00171                    pMenu.setInvoker(dataPopupMenu);
00172                  break;
00173                  default:
00174                  }
00175             }
00176     }
00177 
00178    private void getColorEditorMenu() {
00179        dataPopupMenu = new JMenu("Color Editor");
00180        dataPopupMenu.setFont(menuFont);
00181 
00182        JMenuItem item1 = new JMenuItem("Edit Display Colours/Scale...");
00183        item1.setFont(menuFont);
00184        dataPopupMenu.add(item1);
00185        item1.addActionListener(new java.awt.event.ActionListener() {
00186              public void actionPerformed(java.awt.event.ActionEvent evt) {
00187                if(colorScale==null) return;
00188                if(colorScaleChooser==null) {
00189                       colorScaleChooser = new ColorScaleChooser(guiControl, colorScale);
00190                       colorScaleChooser.setLocationRelativeTo(guiControl);
00191                       }
00192                else colorScaleChooser.showNewScale(colorScale);
00193                colorScaleChooser.setVisible(true);
00194 
00195                      }
00196 
00197           });  
00198 
00199        }
00200 
00201  
00202 }

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