Class DrawPanel

  • All Implemented Interfaces:
    java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

    public class DrawPanel
    extends javax.swing.JPanel
    Classe qui gère la zone de dessin
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class javax.swing.JPanel

        javax.swing.JPanel.AccessibleJPanel
      • Nested classes/interfaces inherited from class javax.swing.JComponent

        javax.swing.JComponent.AccessibleJComponent
      • Nested classes/interfaces inherited from class java.awt.Container

        java.awt.Container.AccessibleAWTContainer
      • Nested classes/interfaces inherited from class java.awt.Component

        java.awt.Component.AccessibleAWTComponent, java.awt.Component.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private double arcDestX  
      private double arcDestY  
      private double arcOriginX  
      private double arcOriginY  
      private boolean clickError  
      int convert  
      private static java.lang.String DELETE  
      private javax.swing.JFrame frame  
      private int idArc  
      private int idPlace  
      private int idTransition  
      private static int IFW  
      private int indexOfClickArc  
      double MAX_ZOOM
      Zoom maximal de la zone dessin
      double MIN_ZOOM
      Zoom minimal de la zone dessin
      Model model  
      double mouseX  
      double mouseY  
      double scaleFactor  
      double scaleX  
      double scaleY  
      java.lang.Object selectedObject  
      java.awt.geom.AffineTransform transform  
      • Fields inherited from class javax.swing.JComponent

        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.Component

        accessibleContext, 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

      Constructors 
      Constructor Description
      DrawPanel​(javax.swing.JFrame frame, Model model)
      Constructeur du Panel de dessin
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addArc​(double x1, double y1, double x2, double y2)
      Ajouter une arc au système d'un point d'origine (x1, y1) au point d'arrivée (x2, y2).
      void addPlace​(double x, double y)
      Ajouter une place au système et dans la zone de dessin
      void addTransition​(double x, double y)
      Ajouter une transition au système et à la zone de dessin
      void applyPanel()
      Rendre la zone de dessin visible dans la fenêtre
      private boolean arcAlreadyExist​(java.util.List<Arc> arcs, Arc arc)
      Méthode qui permet de vérifier si l'arc qui l'utilisateur tente de créer existe déjà.
      void clearAll()
      Nettoyer le modèle, et la zone de dessin.
      void deleteSelectedObject()
      Méthode qui permet de supprimer l'objet sélectionné.
      private void drawTooltips​(java.awt.Graphics g)
      Utilisé pour afficher du texte dans la zone de dessin.
      void errorSelect()
      Lorsque l'utilisateur sélectionne ni un place, ni une transition lors de la modification du Label
      private Arc getAlreadyExistingArc​(java.util.List<Arc> arcs, Arc arc)
      Méthode qui permet de récupérer un arc existant dans la liste d'arcs.
      java.lang.Object getSelectedObject​(double x, double y)
      Retourne l'objet sur lequel on a cliqué
      void loadCoordinatesArc​(double x, double y)
      Déterminer les deux couples de coordonnées pour créer un arc
      void paintComponent​(java.awt.Graphics g)
      Afficher tous les objets dans la zone de dessin
      void printModel()
      Afficher le modèle dans la console
      void selectObject​(java.lang.Object obj)
      Définir la variable selectedObject à l'objet passé en paramètre
      void showModel()
      Afficher le modèle dans une popup en utilisant LaTeX
      void showOptions​(java.lang.Object obj)
      Afficher les options de l'objet passé en paramètre.
      void showOptionsLabel​(java.lang.Object obj)
      Afficher une popup de sélection du Label ainsi que de la position du label pour une place ou une transition.
      void updatePosition​(java.lang.Object obj, double scaleX, double scaleY, double dx, double dy)
      Méthode qui déplace l'objet donné en paramètre en fonction des paramètres de facteur d'agrandissement et de déplacement (dx,dy) de la souris.
      void updatePositions​(double scaleX, double scaleY, double dx, double dy)
      Méthode qui déplace tous les objets du panel de dessin, appelée lors de l'appui clic-molette.
      • Methods inherited from class javax.swing.JPanel

        getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
      • Methods inherited from class javax.swing.JComponent

        addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, 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, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, 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, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
      • Methods inherited from class java.awt.Container

        add, add, add, add, add, addContainerListener, addImpl, 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, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, firePropertyChange, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • frame

        private final javax.swing.JFrame frame
      • model

        public Model model
      • arcOriginX

        private double arcOriginX
      • arcOriginY

        private double arcOriginY
      • arcDestX

        private double arcDestX
      • arcDestY

        private double arcDestY
      • indexOfClickArc

        private int indexOfClickArc
      • selectedObject

        public java.lang.Object selectedObject
      • clickError

        private boolean clickError
      • idPlace

        private int idPlace
      • idTransition

        private int idTransition
      • idArc

        private int idArc
      • scaleFactor

        public double scaleFactor
      • scaleX

        public double scaleX
      • scaleY

        public double scaleY
      • convert

        public int convert
      • transform

        public java.awt.geom.AffineTransform transform
      • mouseX

        public double mouseX
      • mouseY

        public double mouseY
    • Constructor Detail

      • DrawPanel

        public DrawPanel​(javax.swing.JFrame frame,
                         Model model)
        Constructeur du Panel de dessin
        Parameters:
        frame - Frame de la fenêtre
        model - Modèle du système
    • Method Detail

      • updatePositions

        public void updatePositions​(double scaleX,
                                    double scaleY,
                                    double dx,
                                    double dy)
        Méthode qui déplace tous les objets du panel de dessin, appelée lors de l'appui clic-molette. Elle met à jour les positions de tous les objets en fonction du facteur d'agrandissement (lié au zoom et au facteur d'agrandissement de l'OS) ainsi que du déplacement (dx, dy). Nous utilisons (dx,dy) car cette fonction est appelée à chaque tick.
        Parameters:
        scaleX - Facteur d'agrandissement sur X
        scaleY - Facteur d'agrandissement sur Y
        dx - Plus petit déplacement sur X
        dy - Plus petit déplacement sur Y
      • updatePosition

        public void updatePosition​(java.lang.Object obj,
                                   double scaleX,
                                   double scaleY,
                                   double dx,
                                   double dy)
        Méthode qui déplace l'objet donné en paramètre en fonction des paramètres de facteur d'agrandissement et de déplacement (dx,dy) de la souris. C'est le même fonctionnement que la méthode updatePositions(), mais pour un seul objet. Utilisé par l'outil de sélection.
        Parameters:
        obj - : Objet.
        scaleX - : Facteur d'agrandissement sur X
        scaleY - : Facteur d'agrandissement sur Y
        dx - : Plus petit déplacement sur X
        dy - : Plus petit déplacement sur Y
      • printModel

        public void printModel()
        Afficher le modèle dans la console
      • paintComponent

        public void paintComponent​(java.awt.Graphics g)
        Afficher tous les objets dans la zone de dessin
        Overrides:
        paintComponent in class javax.swing.JComponent
        Parameters:
        g - Objet graphique (Graphics)
      • drawTooltips

        private void drawTooltips​(java.awt.Graphics g)
        Utilisé pour afficher du texte dans la zone de dessin. Notamment pour afficher l'information à l'utilisateur que l'arc a bien été défini.
        Parameters:
        g - Objet Graphics
      • clearAll

        public void clearAll()
        Nettoyer le modèle, et la zone de dessin.
      • addPlace

        public void addPlace​(double x,
                             double y)
        Ajouter une place au système et dans la zone de dessin
        Parameters:
        x - Coordonnée X du nouvel objet
        y - Coordonnée Y du nouvel objet
      • arcAlreadyExist

        private boolean arcAlreadyExist​(java.util.List<Arc> arcs,
                                        Arc arc)
        Méthode qui permet de vérifier si l'arc qui l'utilisateur tente de créer existe déjà.
        Parameters:
        arcs - liste des arcs.
        arc - arc à tester.
        Returns:
        Vrai ou Faux.
      • getAlreadyExistingArc

        private Arc getAlreadyExistingArc​(java.util.List<Arc> arcs,
                                          Arc arc)
        Méthode qui permet de récupérer un arc existant dans la liste d'arcs.
        Parameters:
        arcs - liste des arcs.
        arc - arc existant.
        Returns:
        arc
      • addArc

        public void addArc​(double x1,
                           double y1,
                           double x2,
                           double y2)
        Ajouter une arc au système d'un point d'origine (x1, y1) au point d'arrivée (x2, y2). Ne fonctionne pas si au moins un des deux couples de coordonnées ne correspond pas à un objet déjà existant.
        Parameters:
        x1 - Coordonnée X de l'objet 1
        y1 - Coordonnée Y de l'objet 1
        x2 - Coordonnée X de l'objet 2
        y2 - Coordonnée Y de l'objet 2
      • addTransition

        public void addTransition​(double x,
                                  double y)
        Ajouter une transition au système et à la zone de dessin
        Parameters:
        x - Coordonnée X de l'objet transition
        y - Coordonnée Y de l'objet transition
      • applyPanel

        public void applyPanel()
        Rendre la zone de dessin visible dans la fenêtre
      • loadCoordinatesArc

        public void loadCoordinatesArc​(double x,
                                       double y)
        Déterminer les deux couples de coordonnées pour créer un arc
        Parameters:
        x - Coordonnée X
        y - Coordonnée Y
      • getSelectedObject

        public java.lang.Object getSelectedObject​(double x,
                                                  double y)
        Retourne l'objet sur lequel on a cliqué
        Parameters:
        x - Coordonnée X du click
        y - Coordonnée Y du click
        Returns:
        Objet
      • selectObject

        public void selectObject​(java.lang.Object obj)
        Définir la variable selectedObject à l'objet passé en paramètre
        Parameters:
        obj - Transition, Arc ou Place
      • deleteSelectedObject

        public void deleteSelectedObject()
        Méthode qui permet de supprimer l'objet sélectionné.
      • showModel

        public void showModel()
        Afficher le modèle dans une popup en utilisant LaTeX
      • showOptions

        public void showOptions​(java.lang.Object obj)
        Afficher les options de l'objet passé en paramètre. Permet à l'utilisateur de définir le marquage d'une place ainsi que l'orientation d'une transition via l'affichage d'une boite de dialogue.
        Parameters:
        obj - Transition, Place ou Arc.
      • showOptionsLabel

        public void showOptionsLabel​(java.lang.Object obj)
        Afficher une popup de sélection du Label ainsi que de la position du label pour une place ou une transition. Une fois les valeurs remplies, un label est créé à la position souhaitée par l'utilisateur.
        Parameters:
        obj - Place ou Transition
      • errorSelect

        public void errorSelect()
        Lorsque l'utilisateur sélectionne ni un place, ni une transition lors de la modification du Label