home *** CD-ROM | disk | FTP | other *** search
/ BUG 15 / BUGCD1998_06.ISO / aplic / jbuilder / jsamples.z / IntegerSpinEditor.java < prev    next >
Text File  |  1997-07-30  |  7KB  |  225 lines

  1. package borland.samples.intl.util;
  2.  
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. import java.util.*;
  6. import borland.jbcl.util.*;
  7. import borland.jbcl.view.*;
  8. import borland.jbcl.control.*;
  9. import borland.jbcl.model.*;
  10.  
  11. public class IntegerSpinEditor extends Panel implements ItemEditor {
  12.   private Scrollbar scrollbar1 = new Scrollbar();
  13.   private MaskableTextItemEditor maskableTextItemEditor1 = new MaskableTextItemEditor();
  14.  
  15.   private int initial;
  16.   private int minimum;
  17.   private int maximum;
  18.   private int increment;
  19.  
  20.   public IntegerSpinEditor() {
  21.     this(1);
  22.   }
  23.  
  24.   public IntegerSpinEditor(int initial) {
  25.     this(initial, 1, 100);
  26.   }
  27.  
  28.   public IntegerSpinEditor(int initial, int minimum, int maximum) {
  29.     this(initial, minimum, maximum, 1);
  30.   }
  31.  
  32.   public IntegerSpinEditor(int initial, int minimum, int maximum, int increment) {
  33.     this.initial = initial;
  34.     this.minimum = minimum;
  35.     this.maximum = maximum;
  36.     this.increment = increment;
  37.  
  38.     scrollbar1.setValues(-initial, 1, -maximum, -minimum+1);
  39.     scrollbar1.setBlockIncrement(-increment);
  40.     scrollbar1.addAdjustmentListener(new IntegerSpinEditor_scrollbar1_adjustmentAdapter(this));
  41.  
  42.     maskableTextItemEditor1.setText(String.valueOf(initial));
  43.     maskableTextItemEditor1.addActionListener(new IntegerSpinEditor_maskableTextItemEditor1_actionListener(this));
  44.  
  45.     setLayout(new BorderLayout());
  46.     add(maskableTextItemEditor1, BorderLayout.CENTER);
  47.     add(scrollbar1, BorderLayout.EAST);
  48.  
  49.     maskableTextItemEditor1.setEditMask("######", Variant.INT, Locale.getDefault());
  50.   }
  51.  
  52.   public void setMinimum(int minimum) {
  53.     scrollbar1.setMinimum(-minimum+1);
  54.     this.minimum = minimum;
  55.   }
  56.  
  57.   public int getMinimum() {
  58.     return minimum;
  59.   }
  60.  
  61.   public void setMaximum(int maximum) {
  62.     scrollbar1.setMaximum(-maximum);
  63.     this.maximum = maximum;
  64.   }
  65.  
  66.   public int getMaximum() {
  67.     return maximum;
  68.   }
  69.  
  70.   public void setIncrement(int increment) {
  71.     scrollbar1.setBlockIncrement(-increment);
  72.     this.increment = increment;
  73.   }
  74.  
  75.   public void addKeyListener(KeyListener l) {
  76.     super.addKeyListener(l);
  77.     maskableTextItemEditor1.addKeyListener(l);
  78.     scrollbar1.addKeyListener(l);
  79.   }
  80.   public void removeKeyListener(KeyListener l) {
  81.     super.removeKeyListener(l);
  82.     maskableTextItemEditor1.removeKeyListener(l);
  83.     scrollbar1.removeKeyListener(l);
  84.   }
  85.  
  86.   public Object getValue() {
  87.     Variant variant = (Variant) maskableTextItemEditor1.getValue();
  88.     int value = variant.getInt();
  89.     if (value < minimum) {
  90.       value = minimum;
  91.     } else if (value > maximum) {
  92.       value = maximum;
  93.     }
  94.     variant.setInt(value);
  95. //    System.out.println("IntegerSpinEditor.getValue(): " + value);
  96.     return variant;
  97.   }
  98.  
  99.   public Component getComponent() {
  100.     return this;
  101.   }
  102.  
  103.   public void startEdit(Object value, Rectangle bounds, ItemEditSite site) {
  104. //    System.out.println("IntegerSpinEditor.startEdit(" + value.toString() + ")");
  105.  
  106.     // do bounds needs to be adjusted?  Possibly not, because we layout again below.
  107.     maskableTextItemEditor1.startEdit(value, bounds, site);
  108.  
  109.     Integer integer;
  110.     try {
  111.       integer = new Integer(((Variant) maskableTextItemEditor1.getValue()).getInt());
  112.     } catch (NumberFormatException ex) {
  113.       integer = new Integer(minimum);
  114.     }
  115.     int intVal = integer.intValue();
  116.  
  117.     scrollbar1.setValue(-intVal);
  118.  
  119.     if (site != null) {
  120.       setBackground(site.getBackground());
  121.       setForeground(site.getForeground());
  122.       setFont(site.getFont());
  123.     }
  124.  
  125.     setBounds(bounds.x, bounds.y, bounds.width, bounds.height);
  126.     validate();
  127.     setVisible(true);
  128.  
  129.     maskableTextItemEditor1.requestFocus();
  130.   }
  131.  
  132.   public void changeBounds(Rectangle bounds) {
  133. //    System.out.println("IntegerSpinEditor.changeBounds()");
  134.     maskableTextItemEditor1.changeBounds(bounds);
  135.     setBounds(bounds.x, bounds.y, bounds.width, bounds.height);
  136.     validate();
  137.   }
  138.  
  139.   public boolean canPost() {
  140. //    System.out.println("IntegerSpinEditor.canPost()");
  141.     return maskableTextItemEditor1.canPost();
  142.   }
  143.  
  144.   public void endEdit(boolean posted) {
  145. //    System.out.println("IntegerSpinEditor.endEdit()");
  146.     maskableTextItemEditor1.endEdit(posted);
  147.   }
  148.  
  149.   public void scrollbar1_adjustmentValueChanged(AdjustmentEvent e) {
  150. //    System.out.println("IntegerSpinEditor.adjustmentValueChanged(), scrollbar1.getValue(): " + scrollbar1.getValue());
  151.     Integer integer;
  152.     Variant variant = (Variant) maskableTextItemEditor1.getValue();
  153.     maskableTextItemEditor1.endEdit(false);
  154. //    System.out.println("original value: " + variant);
  155.     int value = variant.getInt();
  156.     int type = e.getAdjustmentType();
  157.     switch (type) {
  158.       case AdjustmentEvent.UNIT_INCREMENT: 
  159. //    System.out.println("UNIT_INCREMENT");
  160.     value--;
  161.     break;
  162.       case AdjustmentEvent.UNIT_DECREMENT:
  163. //    System.out.println("UNIT_DECREMENT");
  164.     value++;
  165.     break;
  166.       case AdjustmentEvent.BLOCK_INCREMENT: 
  167. //    System.out.println("BLOCK_INCREMENT");
  168.     value -= increment;
  169.     break;
  170.       case AdjustmentEvent.BLOCK_DECREMENT:
  171. //    System.out.println("BLOCK_DECREMENT");
  172.     value += increment;
  173.     break;
  174.     }
  175.     if (value < minimum) {
  176.       value = minimum;
  177.     } else if (value > maximum) {
  178.       value = maximum;
  179.     }
  180.     variant.setInt(value);
  181.     scrollbar1.setValue(-value);
  182. //    System.out.println("IntegerSpinEditor.adjustmentValueChanged(), scrollbar1.getValue(): " + scrollbar1.getValue());
  183.  
  184. //    System.out.println("new value: " + value);
  185.     maskableTextItemEditor1.startEdit(variant, getBounds(), null);
  186.     validate();
  187.     setVisible(true);
  188.     requestFocus();
  189.   }
  190.   
  191.   void maskableTextItemEditor1_actionPerformed(ActionEvent e) {
  192. //    System.out.println("IntegerSpinEditor.actionPerformed()");
  193.     try {
  194.       scrollbar1.setValue(((Variant) maskableTextItemEditor1.getValue()).getInt() * -1);
  195.     } catch (Exception ex) {
  196.       ex.printStackTrace();
  197.     }
  198.   }
  199.  
  200. }
  201.  
  202. class IntegerSpinEditor_scrollbar1_adjustmentAdapter implements java.awt.event.AdjustmentListener {
  203.   IntegerSpinEditor adaptee;
  204.  
  205.   IntegerSpinEditor_scrollbar1_adjustmentAdapter(IntegerSpinEditor adaptee) {
  206.     this.adaptee = adaptee;
  207.   }
  208.  
  209.   public void adjustmentValueChanged(java.awt.event.AdjustmentEvent e) {
  210.     adaptee.scrollbar1_adjustmentValueChanged(e);
  211.   }
  212. }
  213.  
  214. class IntegerSpinEditor_maskableTextItemEditor1_actionListener implements java.awt.event.ActionListener {
  215.   IntegerSpinEditor adaptee;
  216.  
  217.   IntegerSpinEditor_maskableTextItemEditor1_actionListener(IntegerSpinEditor adaptee) {
  218.     this.adaptee = adaptee;
  219.   }
  220.  
  221.   public void actionPerformed(ActionEvent e) {
  222.     adaptee.maskableTextItemEditor1_actionPerformed(e);
  223.   }
  224. }
  225.