Résolution #25 Organisation éléments UML
This commit is contained in:
@@ -12,7 +12,11 @@ import java.util.Vector;
|
||||
* Classe permettant la création de fenêtres pour la modification des propriétés des classes.
|
||||
* @author V.BOULANGER
|
||||
*/
|
||||
public class ClassPropertiesWindow extends JFrame {
|
||||
public class ClassPropertiesWindow extends JDialog {
|
||||
|
||||
public static int UPDATE_ATTR = 0;
|
||||
public static int UPDATE_METH = 1;
|
||||
private static int UPDATE_ALL = 2;
|
||||
|
||||
private UmlDiagram _umlDiagram;
|
||||
private Class _class;
|
||||
@@ -38,7 +42,8 @@ public class ClassPropertiesWindow extends JFrame {
|
||||
|
||||
//Paramétrage de la fenêtre
|
||||
this.setTitle("Edit properties - " + a.getName());
|
||||
this.setSize(new Dimension(800, 300));
|
||||
this.setModal(true);
|
||||
this.setSize(new Dimension(800, 350));
|
||||
Image img = null;
|
||||
try { img = ImageIO.read(AppThinker.class.getResource("img/logoAppThinker.png")); } catch (Exception ex) { }
|
||||
this.setIconImage(img);
|
||||
@@ -49,7 +54,6 @@ public class ClassPropertiesWindow extends JFrame {
|
||||
//Espace général de la fenêtre
|
||||
JPanel generalPanel = new JPanel();
|
||||
generalPanel.setLayout(new BoxLayout(generalPanel, BoxLayout.Y_AXIS));
|
||||
generalPanel.setAlignmentX(LEFT_ALIGNMENT);
|
||||
|
||||
//Espace de modification du nom
|
||||
JPanel namePan = new JPanel();
|
||||
@@ -78,23 +82,54 @@ public class ClassPropertiesWindow extends JFrame {
|
||||
|
||||
JPanel attributesTableModifier = new JPanel();
|
||||
attributesTableModifier.setLayout(new BoxLayout(attributesTableModifier, BoxLayout.Y_AXIS));
|
||||
JButton addAttribute = new JButton("+");
|
||||
JButton addAttribute = new JButton(" + ");
|
||||
addAttribute.setToolTipText("Add a new attribute.");
|
||||
addAttribute.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
addAttribute();
|
||||
}
|
||||
});
|
||||
JButton removeAttribute = new JButton("-");
|
||||
attributesTableModifier.add(addAttribute);
|
||||
JButton removeAttribute = new JButton(" - ");
|
||||
removeAttribute.setToolTipText("Remove the selected attribute.");
|
||||
removeAttribute.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
removeAttribute();
|
||||
}
|
||||
});
|
||||
attributesTableModifier.add(addAttribute);
|
||||
attributesTableModifier.add(removeAttribute);
|
||||
|
||||
JButton upAttribute = new JButton("▲");
|
||||
upAttribute.setToolTipText("Go up the selected attribute.");
|
||||
upAttribute.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
int selected = _attributesTable.getSelectedRow();
|
||||
if(_class.upAttribute(selected)){
|
||||
save(ClassPropertiesWindow.UPDATE_ATTR, false);
|
||||
listAttributes();
|
||||
_attributesTable.setRowSelectionInterval(selected - 1, selected - 1);
|
||||
_umlDiagram.repaint();
|
||||
}
|
||||
}
|
||||
});
|
||||
attributesTableModifier.add(upAttribute);
|
||||
JButton downAttribute = new JButton("▼");
|
||||
downAttribute.setToolTipText("Go down the selected attribute.");
|
||||
downAttribute.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
int selected = _attributesTable.getSelectedRow();
|
||||
if(_class.downAttribute(selected)){
|
||||
save(ClassPropertiesWindow.UPDATE_ATTR, false);
|
||||
listAttributes();
|
||||
_attributesTable.setRowSelectionInterval(selected + 1, selected + 1);
|
||||
_umlDiagram.repaint();
|
||||
}
|
||||
}
|
||||
});
|
||||
attributesTableModifier.add(downAttribute);
|
||||
attributesPan.add(attributesTableModifier);
|
||||
|
||||
generalPanel.add(attributesPan);
|
||||
@@ -128,22 +163,66 @@ public class ClassPropertiesWindow extends JFrame {
|
||||
|
||||
JPanel methodsTableModifier = new JPanel();
|
||||
methodsTableModifier.setLayout(new BoxLayout(methodsTableModifier, BoxLayout.Y_AXIS));
|
||||
JButton addMethod = new JButton("+");
|
||||
JButton addMethod = new JButton(" + ");
|
||||
addMethod.setToolTipText("Add a new method.");
|
||||
addMethod.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
addMethod();
|
||||
}
|
||||
});
|
||||
JButton removeMethod = new JButton("-");
|
||||
methodsTableModifier.add(addMethod);
|
||||
|
||||
JButton generateConstructor = new JButton("Generate constructor");
|
||||
generateConstructor.setToolTipText("Generate constructor for this class.");
|
||||
generateConstructor.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
System.out.println("Generate constructor");
|
||||
}
|
||||
});
|
||||
methodsTableModifier.add(generateConstructor);
|
||||
|
||||
JButton removeMethod = new JButton(" - ");
|
||||
removeMethod.setToolTipText("Remove the selected method.");
|
||||
removeMethod.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
removeMethod();
|
||||
}
|
||||
});
|
||||
methodsTableModifier.add(addMethod);
|
||||
methodsTableModifier.add(removeMethod);
|
||||
JButton upMethod = new JButton("▲");
|
||||
upMethod.setToolTipText("Go up the selected method.");
|
||||
upMethod.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
int selected = _methodsTable.getSelectedRow();
|
||||
if(_class.upMethod(selected)){
|
||||
save(ClassPropertiesWindow.UPDATE_METH, false);
|
||||
listMethods();
|
||||
_methodsTable.setRowSelectionInterval(selected - 1, selected - 1);
|
||||
_umlDiagram.repaint();
|
||||
}
|
||||
}
|
||||
});
|
||||
methodsTableModifier.add(upMethod);
|
||||
JButton downMethod = new JButton("▼");
|
||||
downMethod.setToolTipText("Go down the selected method.");
|
||||
downMethod.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
int selected = _methodsTable.getSelectedRow();
|
||||
if(_class.downMethod(selected)){
|
||||
save(ClassPropertiesWindow.UPDATE_METH, false);
|
||||
listMethods();
|
||||
_methodsTable.setRowSelectionInterval(selected + 1, selected + 1);
|
||||
_umlDiagram.repaint();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
methodsTableModifier.add(downMethod);
|
||||
|
||||
methodsPan.add(methodsTableModifier);
|
||||
|
||||
@@ -154,7 +233,7 @@ public class ClassPropertiesWindow extends JFrame {
|
||||
saveBtn.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
saveAndClose();
|
||||
save(ClassPropertiesWindow.UPDATE_ALL, true);
|
||||
}
|
||||
});
|
||||
generalPanel.add(saveBtn);
|
||||
@@ -188,6 +267,7 @@ public class ClassPropertiesWindow extends JFrame {
|
||||
* Ajoute un attribut à la classe et rafraîchit la liste des attributs.
|
||||
*/
|
||||
public void addAttribute(){
|
||||
this.save(ClassPropertiesWindow.UPDATE_ATTR, false);
|
||||
_class.addAttribute(new Attribute());
|
||||
this.listAttributes();
|
||||
}
|
||||
@@ -196,6 +276,7 @@ public class ClassPropertiesWindow extends JFrame {
|
||||
* Retire un attribut à la classe et rafraîchit la liste des attributs.
|
||||
*/
|
||||
public void removeAttribute(){
|
||||
this.save(ClassPropertiesWindow.UPDATE_ATTR, false);
|
||||
int i = _attributesTable.getSelectedRow();
|
||||
if(i != -1){
|
||||
_class.removeAttribute(i);
|
||||
@@ -271,6 +352,7 @@ public class ClassPropertiesWindow extends JFrame {
|
||||
* Ajoute une méthode à la classe et rafraîchit la liste des méthodes.
|
||||
*/
|
||||
public void addMethod(){
|
||||
this.save(ClassPropertiesWindow.UPDATE_METH, false);
|
||||
_class.addMethod(new Method());
|
||||
this.listMethods();
|
||||
}
|
||||
@@ -279,6 +361,7 @@ public class ClassPropertiesWindow extends JFrame {
|
||||
* Retire une méthode à la classe et rafraîchit la liste des méthodes.
|
||||
*/
|
||||
public void removeMethod(){
|
||||
this.save(ClassPropertiesWindow.UPDATE_METH, false);
|
||||
int i = _methodsTable.getSelectedRow();
|
||||
if(i != -1){
|
||||
_class.removeMethod(i);
|
||||
@@ -358,65 +441,74 @@ public class ClassPropertiesWindow extends JFrame {
|
||||
|
||||
/**
|
||||
* Sauvegarde les modifications pour la classe en cours et ferme la fenêtre.
|
||||
* @param focusUpdate Les éléments à sauvegarder.
|
||||
* @param quit Fermer la fenêtre après la sauvegarde.
|
||||
*/
|
||||
public void saveAndClose(){
|
||||
//Termine l'édition en sélectionnant une autre cellule
|
||||
_attributesTable.editCellAt(0,0);
|
||||
//Changement du nom de la classe
|
||||
_class.setName(_nameField.getText());
|
||||
//Enregistrement des attributs
|
||||
for(int i = 0; i <= _attributeModel.getRowCount()-1; i++){
|
||||
Vector vect = (Vector)_attributeModel.getDataVector().elementAt(i);
|
||||
String access = vect.get(1).toString();
|
||||
switch(access){
|
||||
case "PRIVATE" :
|
||||
_class.getAttributes().get(i).setAccess(Attribute.PRIVATE);
|
||||
break;
|
||||
case "PUBLIC" :
|
||||
_class.getAttributes().get(i).setAccess(Attribute.PUBLIC);
|
||||
break;
|
||||
case "PROTECTED" :
|
||||
_class.getAttributes().get(i).setAccess(Attribute.PROTECTED);
|
||||
break;
|
||||
public void save(int focusUpdate, boolean quit){
|
||||
//Si la sauvegarde des attributs est demandée
|
||||
if(focusUpdate == ClassPropertiesWindow.UPDATE_ATTR || focusUpdate == ClassPropertiesWindow.UPDATE_ALL){
|
||||
//Termine l'édition en sélectionnant une autre cellule
|
||||
_attributesTable.editCellAt(0,0);
|
||||
//Changement du nom de la classe
|
||||
_class.setName(_nameField.getText());
|
||||
//Enregistrement des attributs
|
||||
for(int i = 0; i <= _attributeModel.getRowCount()-1; i++){
|
||||
Vector vect = (Vector)_attributeModel.getDataVector().elementAt(i);
|
||||
String access = vect.get(1).toString();
|
||||
switch(access){
|
||||
case "PRIVATE" :
|
||||
_class.getAttributes().get(i).setAccess(Attribute.PRIVATE);
|
||||
break;
|
||||
case "PUBLIC" :
|
||||
_class.getAttributes().get(i).setAccess(Attribute.PUBLIC);
|
||||
break;
|
||||
case "PROTECTED" :
|
||||
_class.getAttributes().get(i).setAccess(Attribute.PROTECTED);
|
||||
break;
|
||||
}
|
||||
_class.getAttributes().get(i).setName(vect.get(0).toString());
|
||||
_class.getAttributes().get(i).setType(vect.get(2).toString());
|
||||
_class.getAttributes().get(i).setStatic((boolean) vect.get(3));
|
||||
_class.getAttributes().get(i).setFinal((boolean) vect.get(4));
|
||||
_class.getAttributes().get(i).setAbstract((boolean) vect.get(5));
|
||||
_class.getAttributes().get(i).setSynchronized((boolean) vect.get(6));
|
||||
_class.getAttributes().get(i).setVolatile((boolean) vect.get(7));
|
||||
_class.getAttributes().get(i).setTransient((boolean) vect.get(8));
|
||||
}
|
||||
_class.getAttributes().get(i).setName(vect.get(0).toString());
|
||||
_class.getAttributes().get(i).setType(vect.get(2).toString());
|
||||
_class.getAttributes().get(i).setStatic((boolean) vect.get(3));
|
||||
_class.getAttributes().get(i).setFinal((boolean) vect.get(4));
|
||||
_class.getAttributes().get(i).setAbstract((boolean) vect.get(5));
|
||||
_class.getAttributes().get(i).setSynchronized((boolean) vect.get(6));
|
||||
_class.getAttributes().get(i).setVolatile((boolean) vect.get(7));
|
||||
_class.getAttributes().get(i).setTransient((boolean) vect.get(8));
|
||||
|
||||
}
|
||||
//Enregistrement des méthodes
|
||||
_methodsTable.editCellAt(0,0);
|
||||
for(int i = 0; i <= _methodModel.getRowCount()-1; i++){
|
||||
Vector vect = (Vector)_methodModel.getDataVector().elementAt(i);
|
||||
String access = vect.get(1).toString();
|
||||
switch(access){
|
||||
case "PRIVATE" :
|
||||
_class.getMethods().get(i).setAccess(Method.PRIVATE);
|
||||
break;
|
||||
case "PUBLIC" :
|
||||
_class.getMethods().get(i).setAccess(Method.PUBLIC);
|
||||
break;
|
||||
case "PROTECTED" :
|
||||
_class.getMethods().get(i).setAccess(Method.PROTECTED);
|
||||
break;
|
||||
//Si la sauvegarde des méthodes est demandée
|
||||
if(focusUpdate == ClassPropertiesWindow.UPDATE_METH || focusUpdate == ClassPropertiesWindow.UPDATE_ALL){
|
||||
//Enregistrement des méthodes
|
||||
_methodsTable.editCellAt(0,0);
|
||||
for(int i = 0; i <= _methodModel.getRowCount()-1; i++){
|
||||
Vector vect = (Vector)_methodModel.getDataVector().elementAt(i);
|
||||
String access = vect.get(1).toString();
|
||||
switch(access){
|
||||
case "PRIVATE" :
|
||||
_class.getMethods().get(i).setAccess(Method.PRIVATE);
|
||||
break;
|
||||
case "PUBLIC" :
|
||||
_class.getMethods().get(i).setAccess(Method.PUBLIC);
|
||||
break;
|
||||
case "PROTECTED" :
|
||||
_class.getMethods().get(i).setAccess(Method.PROTECTED);
|
||||
break;
|
||||
}
|
||||
_class.getMethods().get(i).setName(vect.get(0).toString());
|
||||
_class.getMethods().get(i).setType(vect.get(2).toString());
|
||||
_class.getMethods().get(i).setStatic((boolean) vect.get(4));
|
||||
_class.getMethods().get(i).setFinal((boolean) vect.get(5));
|
||||
_class.getMethods().get(i).setAbstract((boolean) vect.get(6));
|
||||
_class.getMethods().get(i).setSynchronized((boolean) vect.get(7));
|
||||
_class.getMethods().get(i).setVolatile((boolean) vect.get(8));
|
||||
_class.getMethods().get(i).setTransient((boolean) vect.get(9));
|
||||
}
|
||||
_class.getMethods().get(i).setName(vect.get(0).toString());
|
||||
_class.getMethods().get(i).setType(vect.get(2).toString());
|
||||
_class.getMethods().get(i).setStatic((boolean) vect.get(4));
|
||||
_class.getMethods().get(i).setFinal((boolean) vect.get(5));
|
||||
_class.getMethods().get(i).setAbstract((boolean) vect.get(6));
|
||||
_class.getMethods().get(i).setSynchronized((boolean) vect.get(7));
|
||||
_class.getMethods().get(i).setVolatile((boolean) vect.get(8));
|
||||
_class.getMethods().get(i).setTransient((boolean) vect.get(9));
|
||||
}
|
||||
|
||||
//Rafraichissement de l'affichage
|
||||
this._class.computeMinSize();
|
||||
_umlDiagram.repaint();
|
||||
this.dispose();
|
||||
if(quit) this.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user