Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/arranger/jarl/shell/views/mainShellPanes/MSPDimensionPane.java


1   package com.arranger.jarl.shell.views.mainShellPanes;
2   
3   import com.arranger.jarl.shell.models.BaseModel;
4   import com.arranger.jarl.shell.models.JarlContextModel;
5   import com.arranger.jarl.util.StringTools;
6   
7   import javax.swing.*;
8   import java.awt.*;
9   import java.awt.event.FocusAdapter;
10  import java.awt.event.FocusEvent;
11  import java.awt.event.KeyEvent;
12  
13  /**
14   * MSPDimensionPane created on Apr 21, 2003
15   */
16  public class MSPDimensionPane extends BaseMSP {
17      protected static final int DEFAULT_WIDTH = 120;
18      protected static final int DEFAULT_HEIGHT = 120;
19  
20      protected JTextField m_widthText;
21      protected JTextField m_heightText;
22      protected boolean m_isUpdating = false;
23  
24      /**
25       * Create a component
26       * @return
27       */
28      public Component createComponent() {
29          JarlContextModel jarlContextModel = getJarlContextModel();
30  
31          JPanel dimensionPane = new JPanel(new GridLayout(1, 4, 10, 0));
32  
33          boolean hasCustomDimension = jarlContextModel.hasCustomDimension();
34          int width = (hasCustomDimension) ? (int) jarlContextModel.getDimension().getWidth() : DEFAULT_WIDTH;
35          int height = (hasCustomDimension) ? (int) jarlContextModel.getDimension().getHeight() : DEFAULT_HEIGHT;
36  
37          //width
38          m_widthText = new JTextField(String.valueOf(width), 3);
39          m_widthText.addFocusListener(new FocusAdapter() {
40              public void focusLost(FocusEvent e) {
41                  updateFields();
42              }
43          });
44  
45          m_widthText.setEditable(hasCustomDimension);
46  
47          //width title
48          JLabel comp = new JLabel("w", JLabel.TRAILING);
49          comp.setDisplayedMnemonic(KeyEvent.VK_W);
50          comp.setLabelFor(m_widthText);
51          dimensionPane.add(comp);
52          dimensionPane.add(m_widthText);
53  
54  
55          //height
56          m_heightText = new JTextField(String.valueOf(height), 3);
57          m_heightText.addFocusListener(new FocusAdapter() {
58              public void focusLost(FocusEvent e) {
59                  updateFields();
60              }
61          });
62  
63          m_heightText.setEditable(hasCustomDimension);
64  
65          //height title
66          comp = new JLabel("h", JLabel.TRAILING);
67          comp.setDisplayedMnemonic(KeyEvent.VK_H);
68          comp.setLabelFor(m_heightText);
69          dimensionPane.add(comp);
70          dimensionPane.add(m_heightText);
71  
72          //border
73          dimensionPane.setBorder(BorderFactory.createTitledBorder("Dimensions"));
74          return dimensionPane;
75      }
76  
77      public void enable(boolean enabled) {
78          m_isUpdating = true;
79          try {
80              m_widthText.setEditable(enabled);
81              m_heightText.setEditable(enabled);
82          } finally {
83              m_isUpdating = false;
84          }
85      }
86  
87      public Dimension getCustomDimensions() {
88          return new Dimension(
89                  getValue(m_widthText.getText(), DEFAULT_WIDTH),
90                  getValue(m_heightText.getText(), DEFAULT_HEIGHT));
91      }
92  
93      public void onChange(BaseModel baseModel, String propertyName) {
94          //don't bother if we're initiating the update
95          if (m_isUpdating) {
96              return;
97          }
98          if (baseModel instanceof JarlContextModel && JarlContextModel.CUSTOM_DIMENSION.equals(propertyName)) {
99              JarlContextModel jarlContextModel = (JarlContextModel) baseModel;
100             if (jarlContextModel.hasCustomDimension()) {
101                 Dimension dimension = jarlContextModel.getDimension();
102                 m_widthText.setText(String.valueOf((int) dimension.getWidth()));
103                 m_heightText.setText(String.valueOf((int) dimension.getHeight()));
104             }
105         }
106     }
107 
108     protected void updateFields() {
109         m_isUpdating = true;
110         try {
111             JarlContextModel jarlContextModel = getJarlContextModel();
112             if (jarlContextModel.hasCustomDimension()) {
113                 jarlContextModel.setDimension(getCustomDimensions());
114                 m_jarlShell.saveModels();
115             }
116         } catch (Exception e) {
117             e.printStackTrace();
118         } finally {
119             m_isUpdating = false;
120         }
121     }
122 
123     protected int getValue(String text, int defaultValue) {
124         if (StringTools.isEmpty(text)) {
125             return defaultValue;
126         } else {
127             double d = Double.parseDouble(text);
128             if (d < 1) {
129                 d = defaultValue;
130             }
131             return (int) d;
132         }
133     }
134 }