Résolution #8 Modifications classes et méthodes
This commit is contained in:
@@ -3,14 +3,17 @@ import java.awt.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.awt.event.MouseMotionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Cette classe permet d'afficher l'ensemble des éléments du projet sous la forme d'un diagramme UML.
|
||||
* @author V.BOULANGER
|
||||
*/
|
||||
public class UmlDiagram extends JPanel implements MouseListener, MouseMotionListener {
|
||||
|
||||
private Project _project;
|
||||
private AppThinkerToolbar _toolbar;
|
||||
private List<Class> _classes;
|
||||
private List<Link> _links;
|
||||
private Object _selected;
|
||||
@@ -28,6 +31,7 @@ public class UmlDiagram extends JPanel implements MouseListener, MouseMotionList
|
||||
this.addMouseListener(this);
|
||||
this.addMouseMotionListener(this);
|
||||
this.setPreferredSize(new Dimension(3000,3000));
|
||||
this._toolbar = new AppThinkerToolbar(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -79,11 +83,12 @@ public class UmlDiagram extends JPanel implements MouseListener, MouseMotionList
|
||||
for(Method m : a.getMethods()){
|
||||
posCounter += font2.getSize();
|
||||
String chain = m.getAccess() + " " + m.getName() + "(";
|
||||
ArrayList<String> listArguments = new ArrayList<String>();
|
||||
for(Argument ar : m.getArguments()){
|
||||
chain += ar.getName() + " : " + ar.getType() + ", ";
|
||||
listArguments.add(ar.getName() + " : " + ar.getType());
|
||||
}
|
||||
chain = chain.substring(0, chain.length()-2);
|
||||
chain += ") : " + m.getType();
|
||||
//chain = chain.substring(0, chain.length()-2);
|
||||
chain += String.join(", ", listArguments) + ") : " + m.getType();
|
||||
g.drawString(chain, posX, posCounter);
|
||||
}
|
||||
//Si la classe est sélectionnée
|
||||
@@ -114,6 +119,14 @@ public class UmlDiagram extends JPanel implements MouseListener, MouseMotionList
|
||||
AppThinker.getWindow().repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupère la toolbar du diagramme.
|
||||
* @return La toolbar du diagramme.
|
||||
*/
|
||||
public AppThinkerToolbar getToolbar(){
|
||||
return this._toolbar;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mets à jour graphiquement le diagramme UML.
|
||||
*/
|
||||
@@ -164,6 +177,18 @@ public class UmlDiagram extends JPanel implements MouseListener, MouseMotionList
|
||||
this.repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* Modifie les propriétés de la classe.
|
||||
* @param a La classe a modifier.
|
||||
*/
|
||||
public void editClass(Class a){
|
||||
ClassPropertiesWindow prop = new ClassPropertiesWindow(this, a);
|
||||
}
|
||||
|
||||
public void removeClass(Class a){
|
||||
AppThinker.getProject().getClasses().remove(a);
|
||||
}
|
||||
|
||||
//Actions de la souris sur le diagramme UML
|
||||
/**
|
||||
* Action du clic de la souris sur le diagramme.
|
||||
@@ -171,8 +196,11 @@ public class UmlDiagram extends JPanel implements MouseListener, MouseMotionList
|
||||
*/
|
||||
@Override
|
||||
public void mouseClicked(MouseEvent e) {
|
||||
if(e.getClickCount() == 2){
|
||||
System.out.println("Modification des propriétés");
|
||||
//Si il s'agit d'un double-clic et que l'outil sélection est sélectionné, on ouvre la fenêtre d'édition de la classe
|
||||
if(e.getClickCount() == 2 && _toolbar.getCurrentTool() == AppThinkerToolbar.SELECT_TOOL){
|
||||
if(_selected instanceof Class){
|
||||
this.editClass((Class) _selected);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,18 +210,21 @@ public class UmlDiagram extends JPanel implements MouseListener, MouseMotionList
|
||||
*/
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
int tool = AppThinker.getWindow().getToolbar().getCurrentTool();
|
||||
int tool = _toolbar.getCurrentTool();
|
||||
switch(tool){
|
||||
//On essaie de sélectionner un élément
|
||||
case AppThinkerToolbar.EDIT_TOOL:
|
||||
System.out.println("On édite un élément.");
|
||||
this.select(e.getX(), e.getY());
|
||||
if(_selected instanceof Class){
|
||||
this.editClass((Class) _selected);
|
||||
}
|
||||
break;
|
||||
case AppThinkerToolbar.DELETE_TOOL:
|
||||
System.out.println("On supprime un élément.");
|
||||
this.select(e.getX(), e.getY());
|
||||
if(_selected instanceof Class){
|
||||
Class a = (Class)_selected;
|
||||
AppThinker.getProject().getClasses().remove(a);
|
||||
removeClass((Class)_selected);
|
||||
}
|
||||
this.displayDiagram();
|
||||
break;
|
||||
@@ -205,9 +236,7 @@ public class UmlDiagram extends JPanel implements MouseListener, MouseMotionList
|
||||
break;
|
||||
//On essaie d'ajouter une classe
|
||||
case AppThinkerToolbar.CLASS_TOOL:
|
||||
Class newClass = new Class(e.getX(), e.getY(), Class.RECTANGLE);
|
||||
newClass.addAttribute(new Attribute("_TestAttribut1", Attribute.PROTECTED, "int"));
|
||||
AppThinker.getProject().addClass(newClass);
|
||||
AppThinker.getProject().addClass(new Class(e.getX(), e.getY(), Class.RECTANGLE));
|
||||
break;
|
||||
case AppThinkerToolbar.ASSOCIATION_TOOL:
|
||||
System.out.println("On ajoute une association");
|
||||
|
||||
Reference in New Issue
Block a user