From 72b018d95782b4ba3100ac4445ed2ea14e408062 Mon Sep 17 00:00:00 2001 From: Valentin Boulanger Date: Mon, 23 Nov 2020 15:44:41 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20fonction=20de=20s=C3=A9lectio?= =?UTF-8?q?n=20d'outils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AppThinker/src/AppThinkerMenuBar.java | 35 ++++++------- AppThinker/src/AppThinkerToolbar.java | 72 +++++++++++++++++++------- AppThinker/src/AppThinkerWindow.java | 16 ++++++ AppThinker/src/img/x16/select.png | Bin 0 -> 267 bytes 4 files changed, 84 insertions(+), 39 deletions(-) create mode 100644 AppThinker/src/img/x16/select.png diff --git a/AppThinker/src/AppThinkerMenuBar.java b/AppThinker/src/AppThinkerMenuBar.java index e3c736c..bfffb87 100644 --- a/AppThinker/src/AppThinkerMenuBar.java +++ b/AppThinker/src/AppThinkerMenuBar.java @@ -23,6 +23,7 @@ public class AppThinkerMenuBar extends JMenuBar { private JMenuItem _newClass; private JMenuItem _newAssociation; private JMenuItem _newLink; + private JMenuItem _selectElement; private JMenuItem _editElement; private JMenuItem _deleteElement; private JMenuItem _projectOptions; @@ -55,7 +56,6 @@ public class AppThinkerMenuBar extends JMenuBar { } }); _fileMenu.add(_newProject); - _openProject = new JMenuItem("Ouvrir un projet existant"); _openProject.setIcon(new ImageIcon(getClass().getResource("img/x16/openProject.png"))); _openProject.addActionListener(new ActionListener() { @@ -112,7 +112,7 @@ public class AppThinkerMenuBar extends JMenuBar { _newClass.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + _window.getToolbar().changeTool(AppThinkerToolbar.CLASS_TOOL); } }); _projectMenu.add(_newClass); @@ -121,7 +121,7 @@ public class AppThinkerMenuBar extends JMenuBar { _newAssociation.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + _window.getToolbar().changeTool(AppThinkerToolbar.ASSOCIATION_TOOL); } }); _projectMenu.add(_newAssociation); @@ -130,16 +130,25 @@ public class AppThinkerMenuBar extends JMenuBar { _newLink.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + _window.getToolbar().changeTool(AppThinkerToolbar.LINK_TOOL); } }); _projectMenu.add(_newLink); + _selectElement = new JMenuItem("Sélectionner"); + _selectElement.setIcon(new ImageIcon(getClass().getResource("img/x16/select.png"))); + _selectElement.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + _window.getToolbar().changeTool(AppThinkerToolbar.SELECT_TOOL); + } + }); + _projectMenu.add(_selectElement); _editElement = new JMenuItem("Éditer"); _editElement.setIcon(new ImageIcon(getClass().getResource("img/x16/edit.png"))); _editElement.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + _window.getToolbar().changeTool(AppThinkerToolbar.EDIT_TOOL); } }); _projectMenu.add(_editElement); @@ -148,7 +157,7 @@ public class AppThinkerMenuBar extends JMenuBar { _deleteElement.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + _window.getToolbar().changeTool(AppThinkerToolbar.DELETE_TOOL); } }); _projectMenu.add(_deleteElement); @@ -221,18 +230,4 @@ public class AppThinkerMenuBar extends JMenuBar { _appInfo.setEnabled(true); _appChangelog.setEnabled(true); } - - /** - * Change le curseur de la grille en curseur d'édition. - */ - public void showEditMouse(){ - this._window.getGrid().setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); - } - - /** - * Change le curseur de la grille en curseur de sélection. - */ - public void showSelectMouse(){ - this._window.getGrid().setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); - } } diff --git a/AppThinker/src/AppThinkerToolbar.java b/AppThinker/src/AppThinkerToolbar.java index cc04a31..9bc528b 100644 --- a/AppThinker/src/AppThinkerToolbar.java +++ b/AppThinker/src/AppThinkerToolbar.java @@ -9,6 +9,17 @@ import java.awt.event.ActionListener; */ public class AppThinkerToolbar extends JPanel { + public static final int SELECT_TOOL = 0; + public static final int EDIT_TOOL = 1; + public static final int DELETE_TOOL = 2; + public static final int COPY_TOOL = 3; + public static final int PASTE_TOOL = 4; + public static final int CLASS_TOOL = 5; + public static final int ASSOCIATION_TOOL = 6; + public static final int LINK_TOOL = 7; + + private int _currentTool = 0; + private JPanel _projectPanel; private JButton _newProject; private JButton _openProject; @@ -85,7 +96,7 @@ public class AppThinkerToolbar extends JPanel { _select.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showSelectMouse(); + changeTool(AppThinkerToolbar.SELECT_TOOL); } }); _editionPanel.add(_select); @@ -97,7 +108,7 @@ public class AppThinkerToolbar extends JPanel { _edit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + changeTool(AppThinkerToolbar.EDIT_TOOL); } }); _editionPanel.add(_edit); @@ -109,7 +120,7 @@ public class AppThinkerToolbar extends JPanel { _delete.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + changeTool(AppThinkerToolbar.DELETE_TOOL); } }); _editionPanel.add(_delete); @@ -121,7 +132,7 @@ public class AppThinkerToolbar extends JPanel { _copy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + changeTool(AppThinkerToolbar.COPY_TOOL); } }); _editionPanel.add(_copy); @@ -133,7 +144,7 @@ public class AppThinkerToolbar extends JPanel { _paste.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + changeTool(AppThinkerToolbar.PASTE_TOOL); } }); _editionPanel.add(_paste); @@ -160,7 +171,7 @@ public class AppThinkerToolbar extends JPanel { _newClass.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + changeTool(AppThinkerToolbar.CLASS_TOOL); } }); _modelisationPanel.add(_newClass); @@ -172,7 +183,7 @@ public class AppThinkerToolbar extends JPanel { _newAssociation.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + changeTool(AppThinkerToolbar.ASSOCIATION_TOOL); } }); _modelisationPanel.add(_newAssociation); @@ -184,7 +195,7 @@ public class AppThinkerToolbar extends JPanel { _newLink.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - showEditMouse(); + changeTool(AppThinkerToolbar.LINK_TOOL); } }); _modelisationPanel.add(_newLink); @@ -211,6 +222,7 @@ public class AppThinkerToolbar extends JPanel { /** * Active les boutons d'édition lorsqu'un projet est ouvert */ + public void enableEditing(){ _newProject.setEnabled(true); _openProject.setEnabled(true); @@ -255,7 +267,7 @@ public class AppThinkerToolbar extends JPanel { /** * Rafraîchit les composants de la barre d'outils. */ - public void refreshTollbar(){ + public void refreshToolbar(){ this._projectPanel.updateUI(); this._editionPanel.updateUI(); this._modelisationPanel.updateUI(); @@ -283,16 +295,38 @@ public class AppThinkerToolbar extends JPanel { } /** - * Change le curseur de la grille en curseur d'édition. + * Change d'outil pour l'édition du diagramme. + * @param tool L'outil cible. */ - public void showEditMouse(){ - this._window.getGrid().setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); - } - - /** - * Change le curseur de la grille en curseur de sélection. - */ - public void showSelectMouse(){ - this._window.getGrid().setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); + public void changeTool(int tool){ + this._currentTool = tool; + if(this._currentTool == AppThinkerToolbar.SELECT_TOOL) this._window.getGrid().setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); + else this._window.getGrid().setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR)); + switch(tool){ + case 1: + _window.getStatusbar().setStatusMessage("Outil édition - Cliquez sur un élément pour l'éditer."); + break; + case 2: + _window.getStatusbar().setStatusMessage("Outil suppression - Cliquez sur un élément pour le supprimer."); + break; + case 3: + _window.getStatusbar().setStatusMessage("Outil copie - Cliquez sur un élément pour le copier."); + break; + case 4: + _window.getStatusbar().setStatusMessage("Outil coller - Cliquez à un endroit pour coller l'élément."); + break; + case 5: + _window.getStatusbar().setStatusMessage("Outil classe - Cliquez à un endroit pour ajouter une classe."); + break; + case 6: + _window.getStatusbar().setStatusMessage("Outil association - Cliquez à un endroit pour ajouter une association."); + break; + case 7: + _window.getStatusbar().setStatusMessage("Outil lien - Cliquez sur une classe, maintenez, puis relachez sur une autre."); + break; + default: + _window.getStatusbar().setStatusMessage("Outil sélection - Cliquez sur un élément pour le sélectionner."); + break; + } } } diff --git a/AppThinker/src/AppThinkerWindow.java b/AppThinker/src/AppThinkerWindow.java index 8e9a3b9..4053574 100644 --- a/AppThinker/src/AppThinkerWindow.java +++ b/AppThinker/src/AppThinkerWindow.java @@ -98,6 +98,14 @@ public class AppThinkerWindow extends JFrame { } + /** + * Récupère la toolbar contenue dans la fenêtre. + * @return La toolbar contenue dans la fenêtre. + */ + public AppThinkerToolbar getToolbar(){ + return this._toolbar; + } + /** * Récupère la grille contenue dans la fenêtre. * @return La grille contenue dans la fenêtre. @@ -105,4 +113,12 @@ public class AppThinkerWindow extends JFrame { public AppThinkerGrid getGrid(){ return this._grid; } + + /** + * Récupère la statusbar contenue dans la fenêtre. + * @return La statusbar contenue dans la fenêtre. + */ + public AppThinkerStatusbar getStatusbar(){ + return this._statusbar; + } } diff --git a/AppThinker/src/img/x16/select.png b/AppThinker/src/img/x16/select.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6ae13e19f9b4a747940e75def81ac225ef01b6 GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#Xvd=gc;dYI$i@Adp%to zLo9liPTt6S$UwkVzJu`wgIfZNG3TPa*O(P9?%q2qFrm3eK#f6-!^rDG>kU7by5#8R z-@n#=(w(&|v2WVuj0DrKi#qNzSsyqWYPw@lV@J6dgW0m0^J)SgvmY1=y||UjW*flk z|G*+CAeA?2^63swyT*y9MMIn|8$0?r`6U0P@iRBG{9*E2`GdKc=S|4rn_rfANr^n* zzhGAOfA#}wZl!yCuKaqMSC5=5nDV#NFfL@R)GN(`_nh^d70kK|oTfTz+!h9Ugu&C* K&t;ucLK6VFAYp9) literal 0 HcmV?d00001