Package com.tech.app.windows.panels
Class DrawPanel
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- javax.swing.JPanel
-
- com.tech.app.windows.panels.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
-
-
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 dessindouble
MIN_ZOOM
Zoom minimal de la zone dessinModel
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
-
-
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 dessinvoid
addTransition(double x, double y)
Ajouter une transition au système et à la zone de dessinvoid
applyPanel()
Rendre la zone de dessin visible dans la fenêtreprivate 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 Labelprivate 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 arcvoid
paintComponent(java.awt.Graphics g)
Afficher tous les objets dans la zone de dessinvoid
printModel()
Afficher le modèle dans la consolevoid
selectObject(java.lang.Object obj)
Définir la variable selectedObject à l'objet passé en paramètrevoid
showModel()
Afficher le modèle dans une popup en utilisant LaTeXvoid
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
-
-
-
-
Field Detail
-
frame
private final javax.swing.JFrame frame
-
model
public Model model
-
IFW
private static final int IFW
- See Also:
- Constant Field Values
-
DELETE
private static final java.lang.String DELETE
- See Also:
- Constant Field Values
-
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
-
MAX_ZOOM
public final double MAX_ZOOM
Zoom maximal de la zone dessin- See Also:
- Constant Field Values
-
MIN_ZOOM
public final double MIN_ZOOM
Zoom minimal de la zone dessin- See Also:
- Constant Field Values
-
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êtremodel
- 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 XscaleY
- Facteur d'agrandissement sur Ydx
- Plus petit déplacement sur Xdy
- 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 XscaleY
- : Facteur d'agrandissement sur Ydx
- : Plus petit déplacement sur Xdy
- : 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 classjavax.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 objety
- 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 1y1
- Coordonnée Y de l'objet 1x2
- Coordonnée X de l'objet 2y2
- 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 transitiony
- 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 Xy
- 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 clicky
- 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
-
-