fi.helsinki.cs.nero.ui
Class Map

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byorg.apache.batik.swing.gvt.JGVTComponent
                  extended byorg.apache.batik.swing.svg.JSVGComponent
                      extended byorg.apache.batik.swing.JSVGCanvas
                          extended byfi.helsinki.cs.nero.ui.Map
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, NeroObserver, java.io.Serializable

public class Map
extends org.apache.batik.swing.JSVGCanvas
implements NeroObserver

Käyttöliittymän karttakomponentti. Toteutukseen käytetään Batikin JSVGCanvas-käyttöliittymäkomponenttia. Toteutusta hankaloittaa se, että Batikin tietorakenteiden käsittely täytyy tehdä Batikin omasta säikeestä käsin, kun taas muu sovellus pyörii lähinnä Swingin tapahtumakäsittelijäsäikeessä. Täytyy siis tarvittaessa vaihtaa säikeestä toiseen. SVG-dokumentissa on huone-elementtejä, joiden tila esitetään graafisesti. Huoneille asetetaan CSS-luokka (attribuutti class), jonka jälkeen ulkoasu määritellään erillisessa CSS-tyylitiedostossa. Luokat ovat seuraavat: room tämä on aina kaikilla huoneilla project valitun projektin huone active valittu huone filtered hakuehtojen mukainen occupied varattu partfree osittain vapaa free vapaa noposts ei sisällä yhtään työpistettä

Author:
Osma Suominen
See Also:
Serialized Form

Nested Class Summary
private  class Map.FloorClickHandler
          Kuuntelija, jonka koodi suoritetaan kerroksenvaihtonappeja klikattaessa.
private  class Map.RoomClickHandler
          Kuuntelija, jonka koodi suoritetaan kartan elementtejä klikattaessa.
private  class Map.SVGLoadListener
          Kuuntelija, jonka koodi suoritetaan, kun SVG-dokumentin lataus on valmis.
private  class Map.WindowOpenListener
          Kuuntelija, jonka koodi suoritetaan, kun Swingin pääikkuna (JFrame) on avattu.
 
Nested classes inherited from class org.apache.batik.swing.JSVGCanvas
org.apache.batik.swing.JSVGCanvas.AffineAction, org.apache.batik.swing.JSVGCanvas.CanvasSVGListener, org.apache.batik.swing.JSVGCanvas.CanvasUserAgent, org.apache.batik.swing.JSVGCanvas.LocationListener, org.apache.batik.swing.JSVGCanvas.ResetTransformAction, org.apache.batik.swing.JSVGCanvas.RotateAction, org.apache.batik.swing.JSVGCanvas.ScrollAction, org.apache.batik.swing.JSVGCanvas.ScrollDownAction, org.apache.batik.swing.JSVGCanvas.ScrollLeftAction, org.apache.batik.swing.JSVGCanvas.ScrollRightAction, org.apache.batik.swing.JSVGCanvas.ScrollUpAction, org.apache.batik.swing.JSVGCanvas.ToolTipModifier, org.apache.batik.swing.JSVGCanvas.ZoomAction, org.apache.batik.swing.JSVGCanvas.ZoomInAction, org.apache.batik.swing.JSVGCanvas.ZoomOutAction
 
Nested classes inherited from class org.apache.batik.swing.svg.JSVGComponent
org.apache.batik.swing.svg.JSVGComponent.BridgeUserAgent, org.apache.batik.swing.svg.JSVGComponent.BridgeUserAgentWrapper, org.apache.batik.swing.svg.JSVGComponent.JSVGComponentListener, org.apache.batik.swing.svg.JSVGComponent.SVGListener
 
Nested classes inherited from class org.apache.batik.swing.gvt.JGVTComponent
org.apache.batik.swing.gvt.JGVTComponent.Listener
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  char activeFloor
          Valitun kerroksen id.
private  org.w3c.dom.Element activeRoom
          Valittua huonetta vastaava SVG-dokumentin elementti.
private static java.lang.String BUTTON_CLASS
          Kartta-SVG:n kerrosnappien class-attribuutti.
private static java.lang.String BUTTON_PREFIX
          Kartta-SVG:n kerrosnappien id:iden alkuosa.
private static java.lang.String BUTTONS_ID
          Kartta-SVG:n nappien ryhmän id.
private  org.w3c.dom.svg.SVGDocument document
          Ladattu kartta SVG-dokumenttina.
private static java.lang.String FLOOR_PREFIX
          Kartta-SVG:n kerrosten id:iden alkuosa.
private static java.lang.String FLOORS
          Kartan kerrosten tunnukset.
private static java.lang.String FLOORS_ID
          Kartta-SVG:n kerrosten ryhmän id.
private  java.util.Collection projectRooms
          Projektin huone-elementtejä säilyttävä kokoelma.
private static int ROOMLABEL_OFFSET_X
          Huoneen nimitekstin vasemman reunan etäisyys huoneen vasemmasta reunasta.
private static int ROOMLABEL_OFFSET_Y
          Huoneen nimitekstin alareunan etäisyys huoneen yläreunasta.
private  java.util.Map roomsByNumber
          Hajautusrakenne, joka tallettaa kaikki järjestelmän tuntemat huoneet.
private  Session session
          Sovelluslogiikan sessio.
private static java.lang.String SVGFILE
          Tiedosto, joka sisältää karttapohjan SVG-muodossa.
private  java.lang.String svgNS
          SVG:n XML-nimiavaruuden määrittävä URI.
 
Fields inherited from class org.apache.batik.swing.JSVGCanvas
FAST_SCROLL_DOWN_ACTION, FAST_SCROLL_LEFT_ACTION, FAST_SCROLL_RIGHT_ACTION, FAST_SCROLL_UP_ACTION, imageZoomInteractor, locationListener, panInteractor, pcs, RESET_TRANSFORM_ACTION, resetTransformInteractor, rotateInteractor, SCROLL_DOWN_ACTION, SCROLL_LEFT_ACTION, SCROLL_RIGHT_ACTION, SCROLL_UP_ACTION, uri, ZOOM_IN_ACTION, ZOOM_OUT_ACTION, zoomInteractor
 
Fields inherited from class org.apache.batik.swing.svg.JSVGComponent
afterStopRunnable, ALWAYS_DYNAMIC, ALWAYS_INTERACTIVE, ALWAYS_STATIC, AUTODETECT, bridgeContext, documentLoader, documentState, FEATURES, fragmentIdentifier, gvtTreeBuilder, gvtTreeBuilderListeners, isDynamicDocument, isInteractiveDocument, jsvgComponentListener, linkActivationListeners, loader, nextDocumentLoader, nextGVTTreeBuilder, nextUpdateManager, prevComponentSize, recenterOnResize, svgDocument, svgDocumentLoaderListeners, svgLoadEventDispatcher, svgLoadEventDispatcherListeners, svgUserAgent, updateManager, updateManagerListeners, updateOverlay, userAgent
 
Fields inherited from class org.apache.batik.swing.gvt.JGVTComponent
disableInteractions, doubleBufferedRendering, eventDispatcher, eventsEnabled, gvtRoot, gvtTreeRenderer, gvtTreeRendererListeners, image, initialTransform, interactor, interactors, jgvtListeners, listener, needRender, overlays, paintingTransform, progressivePaint, progressivePaintThread, renderer, rendererFactory, renderingTransform, selectableText, suspendInteractions, textSelectionManager
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Container
 
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
Map(Session session, javax.swing.JFrame frame)
          Konstruktori, joka luo karttakomponentin.
 
Method Summary
private  void addClass(org.w3c.dom.Element el, java.lang.String newclass)
          Apumetodi SVG-dokumentin elementin class-attribuutin päivittämiseksi.
private  void clearRoomStatus()
          Palauttaa kaikkien kartalla näkyvien huoneiden tilan alkutilaan eli poistaa kaikki korostukset.
private  void removeClass(org.w3c.dom.Element el, java.lang.String cl)
          Apumetodi SVG-dokumentin elementin class-attribuutin päivittämiseksi.
private  void setActiveFloor(char floorID)
          Asettaa aktiivisen kerroksen.
private  void setActiveRoom(Room room)
          Asettaa aktiivisen huoneen sovelluslogiikalle.
private  void showRoomNumbers()
          Piirtää kaikkien huoneiden numerot kartalle.
private  void updateActiveRoom(Room room, boolean changeFloor)
          Merkkaa aktiivisen huoneen kartalle.
private  void updateFilteredRooms(Room[] rooms, int[] roomStatuses)
          Merkkaa hakuehtojen mukaiset huoneet kartalle.
 void updateObserved(int type)
          Kutsutaan sen kertomiseksi, ett? kuunneltava tieto on muuttunut.
private  void updateProjectRooms(Room[] rooms)
          Merkkaa projektin huoneet kartalle.
 
Methods inherited from class org.apache.batik.swing.JSVGCanvas
addPropertyChangeListener, addPropertyChangeListener, createListener, createUserAgent, getEnableImageZoomInteractor, getEnablePanInteractor, getEnableResetTransformInteractor, getEnableRotateInteractor, getEnableZoomInteractor, getURI, installActions, installKeyboardActions, removePropertyChangeListener, removePropertyChangeListener, setDisableInteractions, setEnableImageZoomInteractor, setEnablePanInteractor, setEnableResetTransformInteractor, setEnableRotateInteractor, setEnableZoomInteractor, setURI
 
Methods inherited from class org.apache.batik.swing.svg.JSVGComponent
addGVTTreeBuilderListener, addLinkActivationListener, addSVGDocumentLoaderListener, addSVGLoadEventDispatcherListener, addUpdateManagerListener, calculateViewingTransform, computeRenderingTransform, createBridgeContext, createImageRenderer, dispose, flushImageCache, getCanvasGraphicsNode, getCanvasGraphicsNode, getFragmentIdentifier, getRecenterOnResize, getSVGDocument, getSVGDocumentSize, getUpdateManager, getViewBoxTransform, handleException, installSVGDocument, isDynamic, isInteractive, loadSVGDocument, removeGVTTreeBuilderListener, removeLinkActivationListener, removeSVGDocumentLoaderListener, removeSVGLoadEventDispatcherListener, removeUpdateManagerListener, renderGVTTree, resumeProcessing, setDocument, setDocumentState, setFragmentIdentifier, setGraphicsNode, setMySize, setRecenterOnResize, setSVGDocument, showAlert, showConfirm, showPrompt, showPrompt, startSVGLoadEventDispatcher, stopProcessing, stopThenRun, suspendProcessing, updateRenderingTransform
 
Methods inherited from class org.apache.batik.swing.gvt.JGVTComponent
addGVTTreeRendererListener, addJGVTComponentListener, deselectAll, flush, flush, getDisableInteractions, getDoubleBufferedRendering, getGraphicsNode, getInitialTransform, getInteractors, getOffScreen, getOverlays, getPaintingTransform, getProgressivePaint, getRenderingTransform, getRenderRect, getSelectionOverlayColor, getSelectionOverlayStrokeColor, immediateRepaint, initializeEventHandling, isSelectionOverlayXORMode, paintComponent, releaseRenderingReferences, removeGVTTreeRendererListener, removeJGVTComponentListener, resetRenderingTransform, scheduleGVTRendering, select, setDoubleBufferedRendering, setGraphicsNode, setPaintingTransform, setProgressivePaint, setRenderingTransform, setRenderingTransform, setSelectionOverlayColor, setSelectionOverlayStrokeColor, setSelectionOverlayXORMode
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getAccessibleContext, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setLayout, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, 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
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

SVGFILE

private static final java.lang.String SVGFILE
Tiedosto, joka sisältää karttapohjan SVG-muodossa.

See Also:
Constant Field Values

FLOORS

private static final java.lang.String FLOORS
Kartan kerrosten tunnukset. Merkkijonon jokainen merkki vastaa yhtä kerrosta.

See Also:
Constant Field Values

BUTTONS_ID

private static final java.lang.String BUTTONS_ID
Kartta-SVG:n nappien ryhmän id.

See Also:
Constant Field Values

BUTTON_PREFIX

private static final java.lang.String BUTTON_PREFIX
Kartta-SVG:n kerrosnappien id:iden alkuosa. Koko id on BUTTON_PREFIX + FLOORS[i]

See Also:
Constant Field Values

BUTTON_CLASS

private static final java.lang.String BUTTON_CLASS
Kartta-SVG:n kerrosnappien class-attribuutti.

See Also:
Constant Field Values

FLOOR_PREFIX

private static final java.lang.String FLOOR_PREFIX
Kartta-SVG:n kerrosten id:iden alkuosa. Koko id on FLOOR_PREFIX + FLOORS[i]

See Also:
Constant Field Values

FLOORS_ID

private static final java.lang.String FLOORS_ID
Kartta-SVG:n kerrosten ryhmän id.

See Also:
Constant Field Values

ROOMLABEL_OFFSET_X

private static final int ROOMLABEL_OFFSET_X
Huoneen nimitekstin vasemman reunan etäisyys huoneen vasemmasta reunasta.

See Also:
Constant Field Values

ROOMLABEL_OFFSET_Y

private static final int ROOMLABEL_OFFSET_Y
Huoneen nimitekstin alareunan etäisyys huoneen yläreunasta.

See Also:
Constant Field Values

document

private org.w3c.dom.svg.SVGDocument document
Ladattu kartta SVG-dokumenttina.


session

private Session session
Sovelluslogiikan sessio.


roomsByNumber

private java.util.Map roomsByNumber
Hajautusrakenne, joka tallettaa kaikki järjestelmän tuntemat huoneet. Avaimena on huoneen numero (esim. "C132"), arvona huoneolio (Room).


svgNS

private java.lang.String svgNS
SVG:n XML-nimiavaruuden määrittävä URI. Käytetään lyhennysmerkintänä.


activeRoom

private org.w3c.dom.Element activeRoom
Valittua huonetta vastaava SVG-dokumentin elementti. Null, jos valittua huonetta ei ole.


activeFloor

private char activeFloor
Valitun kerroksen id. Jokin FLOORS-merkkijonon merkeistä.


projectRooms

private java.util.Collection projectRooms
Projektin huone-elementtejä säilyttävä kokoelma. Kokoelman elementit ovat SVG-dokumentin elementtejä (Element-olioita).

Constructor Detail

Map

public Map(Session session,
           javax.swing.JFrame frame)
Konstruktori, joka luo karttakomponentin.

Parameters:
session - sovelluslogiikan sessio
frame - Swingin pääikkuna
Method Detail

updateObserved

public void updateObserved(int type)
Description copied from interface: NeroObserver
Kutsutaan sen kertomiseksi, ett? kuunneltava tieto on muuttunut.

Specified by:
updateObserved in interface NeroObserver
Parameters:
type - muuttuneen tiedon tyyppi

addClass

private void addClass(org.w3c.dom.Element el,
                      java.lang.String newclass)
Apumetodi SVG-dokumentin elementin class-attribuutin päivittämiseksi. Annettu arvo lisätään class-attribuutin listaan luokista. Metodia on kutsuttava Batikin tapahtumakäsittelijäsäikeestä. Jos class-attribuutti jo sisältää annetun luokan, ei tehdä mitään.

Parameters:
el - elementti jonka class-attribuuttia muokataan
newclass - lisättävä class-arvo

removeClass

private void removeClass(org.w3c.dom.Element el,
                         java.lang.String cl)
Apumetodi SVG-dokumentin elementin class-attribuutin päivittämiseksi. Annettu arvo posistetaan class-attribuutin luokista. Metodia on kutsuttava Batikin tapahtumakäsittelijäsäikeestä. Jos class-attribuutti ei sisällä annettua luokkaa, ei tehdä mitään.

Parameters:
el - elementti jonka class-attribuuttia muokataan

clearRoomStatus

private void clearRoomStatus()
Palauttaa kaikkien kartalla näkyvien huoneiden tilan alkutilaan eli poistaa kaikki korostukset. Metodia on kutsuttava Batikin tapahtumakäsittelijäsäikeestä.


updateActiveRoom

private void updateActiveRoom(Room room,
                              boolean changeFloor)
Merkkaa aktiivisen huoneen kartalle. Metodia on kutsuttava Batikin tapahtumakäsittelijäsäikeestä.

Parameters:
room - uusi aktiivinen huone
changeFloor - vaihdetaanko myös kerrosta

updateProjectRooms

private void updateProjectRooms(Room[] rooms)
Merkkaa projektin huoneet kartalle. Metodia on kutsuttava Batikin tapahtumakäsittelijäsäikeestä.


updateFilteredRooms

private void updateFilteredRooms(Room[] rooms,
                                 int[] roomStatuses)
Merkkaa hakuehtojen mukaiset huoneet kartalle. Metodia on kutsuttava Batikin tapahtumakäsittelijäsäikeestä.


setActiveFloor

private void setActiveFloor(char floorID)
Asettaa aktiivisen kerroksen. Piilottaa muut kerrokset näkyvistä. Metodia on kutsuttava Batikin tapahtumakuuntelijasäikeestä.

Parameters:
floorID - kerroksen id 1-merkkisenä merkkijonona

setActiveRoom

private void setActiveRoom(Room room)
Asettaa aktiivisen huoneen sovelluslogiikalle. Kutsu sovelluslogiikkaan tehdään Swingin tapahtumankäsittelijäsäikeessä.

Parameters:
room - huone

showRoomNumbers

private void showRoomNumbers()
Piirtää kaikkien huoneiden numerot kartalle. Piirtäminen tapahtuu etsimällä huonetta vastaava elementti kartalta ja lisäämällä sen kohdalle tekstielementti.