1   package kanta;
2   import javax.swing.SwingConstants;
3   
4   import fi.jyu.mit.ohj2.Mjonot;
5   
6   /**
7    * Kenttä kokonaislukujen tallentamiseksi
8    * @author vesal
9    * @version 31.3.2008
10   *
11   */
12  public class IntKentta extends PerusKentta  {
13      private int arvo;
14  
15      /**
16       * Alustetaan kenttä kysymyksellä.
17       * @param kysymys joka näytetään kenttää kysyttäessä.
18       */
19      public IntKentta(String kysymys) { super(kysymys); }
20  
21      /**
22       * @return kentän arvo kokonaislukuna
23       */
24      public int getValue() { return arvo; }
25  
26      /**
27       * Asetetaan kentän arvo kokonaislukuna
28       * @param value asetettava kokonaislukuarvo
29       */
30      public void setValue(int value) { arvo = value; }
31  
32      /** 
33       * Kentän arvo merkkijonona.
34       * @return kenttä merkkijonona
35       * @example
36       * <pre name="test">
37       *  IntKentta kentta = new IntKentta("määrä");
38       *  kentta.aseta("12") === null;
39       *  kentta.toString() === "12";
40       * </pre>
41       */
42      @Override
43      public String toString() { 
44          return ""+arvo; 
45      }
46  
47  
48  
49      /**
50       * Asetetaan kentän arvo merkkijonosta.  Jos jono 
51       * kunnollinen, palautetaan null.  Jos jono ei
52       * kunnollinen int-syöte, palautetaan virheilmoitus ja
53       * kentän alkuperäinen arvo jää voimaan.
54       * @param jono kentään asetettava arvo mekrkijonona
55       * @return null jos hyvä arvo, muuten virhe.  
56       * @see kanta.PerusKentta#aseta(java.lang.String)
57       * 
58       * @example
59       * <pre name="test">
60       * IntKentta kentta = new IntKentta("määrä");
61       * kentta.aseta("12") === null; kentta.getValue() === 12;
62       * kentta.aseta("k") === "Ei kokonaisluku (k)"; kentta.getValue() === 12;
63       * </pre>
64       */
65      @Override
66      public String aseta(String jono) {
67          StringBuffer sb = new StringBuffer(jono);
68          try {
69              this.arvo = Mjonot.erotaEx(sb,' ',0);
70              return null;
71          }
72          catch (NumberFormatException ex) {
73              return "Ei kokonaisluku (" + jono + ")";
74          }
75      }
76  
77      /**
78       * Palauttaa kentän tiedot veratiltavana merkkijonona
79       * @return vertailtava merkkijono kentästä
80       * @example
81       * <pre name="test">
82       * IntKentta kentta = new IntKentta("määrä");
83       * kentta.aseta("12");  kentta.getAvain() === "        12";
84       * kentta.aseta("1");   kentta.getAvain() === "         1";
85       * kentta.aseta("999"); kentta.getAvain() === "       999";
86       *   
87       * </pre>
88       */
89      @Override
90      public String getAvain() { 
91          return Mjonot.fmt(arvo, 10); 
92      }
93  
94      /**
95       * @return syväkopio oliosta
96       * @example
97       * <pre name="test">
98       *   #THROWS CloneNotSupportedException
99       *   IntKentta kentta = new IntKentta("määrä");
100      *   kentta.aseta("12");
101      *   IntKentta klooni = (IntKentta)kentta.clone();
102      *   kentta.getValue() === klooni.getValue();
103      *   kentta.aseta("13");
104      *   kentta.getValue() === 13;
105      *   klooni.getValue() === 12;
106      * </pre>
107      */
108     @Override
109     public IntKentta clone() throws CloneNotSupportedException {
110         return (IntKentta)super.clone();
111     }
112 
113     /**
114      * @return vaakasuuntainen sijainti kentälle
115      */
116     @Override
117     public int getSijainti() {
118         return SwingConstants.RIGHT;        
119     }
120 }
121