Class PortionSelector

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by PortionSelector
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class PortionSelector
extends javax.swing.JPanel

PortionSelector on JPanelista periytetty oma komponentti, joka esittää numeronäppäimistöä. PortionSelector sisältää kaksi näppäinryhmää, joissa molemmissa on aina yksi näppäin valittuna (JToggleButton + ButtonGroup), muut painikkeet ovat JButtonin kaltaisia. Ensimmäisen ryhmän muodostavat kolme kielinäppäintä ja toisen numeronäppäimet. Numeronäppäimiä käytetään valitsemaan ostettava juoma. PortionSelector tarvitsee tiedot juomavaihtoehdoista sopivaa alustusta varten. Luokan tarkoitus on kapseloida numeronäppäimistön verraten monimutkainen rakennus- ja hallintaprosessi muusta CoffeeDialogin koodista. Luokassa ei ole varsinaista kahvihuoneeseen sisältyvää toiminnallisuutta. Numeronäppäinten painallus vaihtaa tämän luokan säilömää tietoa tehdystä juomavalinnasta, jota käytetään määritettäessä ostettava juoma. Lisäksi luokan operaatioilla voi vaihtaa painikkeiden tekstiä, piirtää ohjelmallisesti napin painallus, sekä piirtää numeronäppäimet uudelleen siten, että osaa painikkeista ei ole käytettävissä valinnan vaihtamisessa. Kyseistä palvelua tarvitaan, kun valittavissa olevia juomia on vähemmän kuin käytettävissä olevia numeronäppäimiä. Luokan palvelut eivät heitä eivätkä aiheuta poikkeuksia: virheelliset parametrit jätetään huomiotta tai korvataan oletuksilla.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Field Summary
static int BUTTON_0
           
static int BUTTON_000
           
static int BUTTON_1
           
static int BUTTON_2
           
static int BUTTON_3
           
static int BUTTON_4
           
static int BUTTON_5
           
static int BUTTON_6
           
static int BUTTON_7
           
static int BUTTON_8
           
static int BUTTON_9
           
static int BUTTON_ADD
           
static int BUTTON_BACKSPACE
           
static int BUTTON_COMMA
           
static int BUTTON_DIVIDE
           
static int BUTTON_ENTER
           
static int BUTTON_MULTIPLY
           
static int BUTTON_NUMLOCK
           
static int BUTTON_SUBTRACT
           
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
PortionSelector()
          Konstruktori rakentaa numeronäppäimistön layoutin ja asettaa numeronäppäimille kuuntelijat.
 
Method Summary
 int getSelected()
          Metodi palauttaa viimeksi valitun numeronäppäimen.
 void init(int intLength, int intSelection)
          Metodi poistaa mahdollisesti olemassaolevat numeronäppäimet ja lisää tilalle uudet.
static void main(java.lang.String[] args)
          Pääohjelmametodi sisältää viisi testiä: metodit pressbutton(int) ja nameButton(int,String) testataan tilapäisen graafisen käyttöliittymän avulla, jota erilliset säikeet päivittävät.
 void nameButton(int intInternalKeyCode, java.lang.String strText)
          Metodi vaihtaa yhden painikkeen tekstin parametrissa tarkennetuksi.
 void pressButton(int intInternalKeyCode)
          Metodi generoi ohjelmallisesti "napin painalluksen" eli parametrissa tarkennettu painike käyttäytyy kuin sitä olisi painettu hiirellä.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getWidth, getVisibleRect, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

BUTTON_0

public static final int BUTTON_0
See Also:
Constant Field Values

BUTTON_1

public static final int BUTTON_1
See Also:
Constant Field Values

BUTTON_2

public static final int BUTTON_2
See Also:
Constant Field Values

BUTTON_3

public static final int BUTTON_3
See Also:
Constant Field Values

BUTTON_4

public static final int BUTTON_4
See Also:
Constant Field Values

BUTTON_5

public static final int BUTTON_5
See Also:
Constant Field Values

BUTTON_6

public static final int BUTTON_6
See Also:
Constant Field Values

BUTTON_7

public static final int BUTTON_7
See Also:
Constant Field Values

BUTTON_8

public static final int BUTTON_8
See Also:
Constant Field Values

BUTTON_9

public static final int BUTTON_9
See Also:
Constant Field Values

BUTTON_NUMLOCK

public static final int BUTTON_NUMLOCK
See Also:
Constant Field Values

BUTTON_DIVIDE

public static final int BUTTON_DIVIDE
See Also:
Constant Field Values

BUTTON_MULTIPLY

public static final int BUTTON_MULTIPLY
See Also:
Constant Field Values

BUTTON_BACKSPACE

public static final int BUTTON_BACKSPACE
See Also:
Constant Field Values

BUTTON_SUBTRACT

public static final int BUTTON_SUBTRACT
See Also:
Constant Field Values

BUTTON_ADD

public static final int BUTTON_ADD
See Also:
Constant Field Values

BUTTON_ENTER

public static final int BUTTON_ENTER
See Also:
Constant Field Values

BUTTON_COMMA

public static final int BUTTON_COMMA
See Also:
Constant Field Values

BUTTON_000

public static final int BUTTON_000
See Also:
Constant Field Values
Constructor Detail

PortionSelector

public PortionSelector()
Konstruktori rakentaa numeronäppäimistön layoutin ja asettaa numeronäppäimille kuuntelijat. Jokainen numeronäppäin vaihtaa valinnaksi int-arvon, joka vastaa sen omaa numeroa. Konstruktori käyttää init()-metodia numeronäppäinten rakentamiseen.

Method Detail

init

public void init(int intLength,
                 int intSelection)
Metodi poistaa mahdollisesti olemassaolevat numeronäppäimet ja lisää tilalle uudet. Uudet painikkeet jaetaan (mahdollisesti) kahteen ryhmään: Alasjääviin painikkeisiin jotka vaikuttavat valintaan, ja painikkeisiin jotka eivät jää painettaessa alas eivätkä vaikuta valintaan. Valinta on siis numero, joka kertoo mikä näppäin on alaspainettuna eli mikä juoma valittuna. Metodin parametreina syötetään valittavissa olevien juomien määrä ja ensimmäiseksi valittuna oleva painike. (Alasjäävistä alhaalla oleva painike.)

Parameters:
intLength -
intSelection - valinta

getSelected

public int getSelected()
Metodi palauttaa viimeksi valitun numeronäppäimen.

Returns:
valittuna oleva numeronäppäin

pressButton

public void pressButton(int intInternalKeyCode)
Metodi generoi ohjelmallisesti "napin painalluksen" eli parametrissa tarkennettu painike käyttäytyy kuin sitä olisi painettu hiirellä. Painike osoitetaan luokan vakioilla, jotka alkavat 'BUTTON_' Esimerkiksi haluttaessa näyttää Enter-näppäimen painallus kutsuttaisiin: pressButton(PortionSelector.BUTTON_ENTER);

Parameters:
intInternalKeyCode - painikkeen tunnus

nameButton

public void nameButton(int intInternalKeyCode,
                       java.lang.String strText)
Metodi vaihtaa yhden painikkeen tekstin parametrissa tarkennetuksi. Painike osoitetaan luokan vakioilla, jotka alkavat 'BUTTON_' Esimerkiksi Enter-näppäimen tekstiä vaihdettaessa kutsuttaisiin: nameButton(PortionSelector.BUTTON_ENTER, "Uusi teksti");

Parameters:
intInternalKeyCode - painikkeen tunnus
strText - painikkeen uusi teksti

main

public static void main(java.lang.String[] args)
Pääohjelmametodi sisältää viisi testiä: metodit pressbutton(int) ja nameButton(int,String) testataan tilapäisen graafisen käyttöliittymän avulla, jota erilliset säikeet päivittävät. Lisäksi testataan init(..) -metodi. Testien tarkempi kuvaus on ohjelmakoodissa.

Parameters:
args -