Jelajahi Sumber

Double click instead of an edit button.

Gilian Joosen 10 tahun lalu
induk
melakukan
cad2459397

+ 35 - 19
src/gui/panels/edit/ActsPane.java

@@ -5,11 +5,11 @@ import agenda.Agenda;
 import gui.panels.edit.dialogs.ActDialogPanel;
 
 import javax.swing.*;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
 
 /**
  * Created by gjoosen on 19/02/15.
@@ -41,9 +41,12 @@ public class ActsPane extends JPanel {
 
         //the cell renderer.
         this.actsList.setCellRenderer(new ActCellRenderer());
-        
+
         //the JList inside a scrollPane.
         JScrollPane scrollPane = new JScrollPane(this.actsList);
+        
+        //double click
+        this.actsList.addMouseListener(new DoubleClickAct(this.actsList, this));
 
         super.add(scrollPane, BorderLayout.CENTER);
     }
@@ -79,24 +82,16 @@ public class ActsPane extends JPanel {
         });
         buttonPane.add(removeButton);
 
-        JButton edit = new JButton("edit");
-        edit.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                Object obj = actsList.getSelectedValue();
-                if(obj != null){
-                    JDialog dialog = new ActDialogPanel(ActsPane.this.agenda, model, (Act) actsList.getSelectedValue());
-                    dialog.setLocation(getCenterOfScreen(dialog));
-                    dialog.setLocationRelativeTo(null);
-                    dialog.pack();
-                    dialog.setVisible(true);
-                }
-            }
-        });
-        buttonPane.add(edit);
-
         return buttonPane;
     }
+    
+    public void editDialog(){
+        JDialog dialog = new ActDialogPanel(ActsPane.this.agenda, model, (Act) actsList.getSelectedValue());
+        dialog.setLocation(getCenterOfScreen(dialog));
+        dialog.setLocationRelativeTo(null);
+        dialog.pack();
+        dialog.setVisible(true);
+    }
 
     private Point getCenterOfScreen(JDialog dialog){
         Toolkit toolkit = Toolkit.getDefaultToolkit();
@@ -135,3 +130,24 @@ class ActCellRenderer extends JLabel implements ListCellRenderer {
         return this;
     }
 }
+
+class DoubleClickAct extends MouseAdapter{
+    protected JList list;
+    private ActsPane pane;
+
+    public DoubleClickAct(JList l, ActsPane pane){
+        this.pane = pane;
+        list = l;
+    }
+
+    public void mouseClicked(MouseEvent e){
+        if(e.getClickCount() == 2){
+            int index = list.locationToIndex(e.getPoint());
+            ListModel dlm = list.getModel();
+            Object item = dlm.getElementAt(index);;
+            list.ensureIndexIsVisible(index);
+            System.out.println("Double clicked on " + item);
+            this.pane.editDialog();
+        }
+    }
+}

+ 33 - 16
src/gui/panels/edit/ArtistPane.java

@@ -10,6 +10,8 @@ import javax.swing.event.ListSelectionListener;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
 
 /**
  * Created by gjoosen on 13/02/15.
@@ -47,6 +49,9 @@ public class ArtistPane extends JPanel {
         //the cell renderer.
         this.artistList.setCellRenderer(new ArtistCellRenderer());
         
+        //double click
+        this.artistList.addMouseListener(new DoubleClickArtist(this.artistList, this));
+        
         //the JList inside a scrollPane.
         JScrollPane scrollPane = new JScrollPane(this.artistList);
         super.add(scrollPane, BorderLayout.CENTER);
@@ -81,22 +86,6 @@ public class ArtistPane extends JPanel {
             }
         });
         buttonPane.add(removeButton);
-        
-        JButton editButton = new JButton("edit");
-        editButton.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                Object obj = artistList.getSelectedValue();
-                if(obj != null){
-                    JDialog dialog = new ArtistDialogPanel(ArtistPane.this.agenda, model, (Artist) artistList.getSelectedValue());
-                    dialog.setLocation(getCenterOfScreen(dialog));
-                    dialog.pack();
-                    dialog.setVisible(true);
-                }
-            }
-        });
-        buttonPane.add(editButton);
-        
         return buttonPane;
     }
 
@@ -111,6 +100,13 @@ public class ArtistPane extends JPanel {
         System.out.println(center.getX() + " - " + center.getY());
         return center;
     }
+    
+    public void editDialog(){
+        JDialog dialog = new ArtistDialogPanel(ArtistPane.this.agenda, model, (Artist) artistList.getSelectedValue());
+        dialog.setLocation(getCenterOfScreen(dialog));
+        dialog.pack();
+        dialog.setVisible(true);
+    }
 }
 
 class ArtistCellRenderer extends JLabel implements ListCellRenderer {
@@ -136,3 +132,24 @@ class ArtistCellRenderer extends JLabel implements ListCellRenderer {
         return this;
     }
 }
+
+class DoubleClickArtist extends MouseAdapter {
+    protected JList list;
+    private ArtistPane pane;
+
+    public DoubleClickArtist(JList l, ArtistPane pane){
+        this.pane = pane;
+        list = l;
+    }
+
+    public void mouseClicked(MouseEvent e){
+        if(e.getClickCount() == 2){
+            int index = list.locationToIndex(e.getPoint());
+            ListModel dlm = list.getModel();
+            Object item = dlm.getElementAt(index);;
+            list.ensureIndexIsVisible(index);
+            System.out.println("Double clicked on " + item);
+            this.pane.editDialog();
+        }
+    }
+}

+ 34 - 18
src/gui/panels/edit/StagesPane.java

@@ -10,6 +10,8 @@ import javax.swing.event.ListSelectionListener;
 import java.awt.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
 
 /**
  * Created by gjoosen on 19/02/15.
@@ -46,6 +48,9 @@ public class StagesPane extends JPanel {
         //the cell renderer.
         this.stagesList.setCellRenderer(new StageCellRenderer());
         
+        //double click
+        this.stagesList.addMouseListener(new DoubleClickStage(this.stagesList, this));
+        
         //the JList inside a scrollPane.
         JScrollPane scrollPane = new JScrollPane(this.stagesList);
 
@@ -81,26 +86,16 @@ public class StagesPane extends JPanel {
         });
         
         buttonPane.add(remove);
-        
-        JButton edit = new JButton("edit");
-        edit.addActionListener(new ActionListener() {
-            @Override
-            public void actionPerformed(ActionEvent e) {
-                Object obj = stagesList.getSelectedValue();
-                if(obj != null){
-                    JDialog dialog = new StageDialogPanel(StagesPane.this.agenda, model, (Stage) stagesList.getSelectedValue());
-                    dialog.setLocation(getCenterOfScreen(dialog));
-                    dialog.setLocationRelativeTo(null);
-                    dialog.pack();
-                    dialog.setVisible(true);
-                }
-            }
-        });
-        
-        buttonPane.add(edit);
-        
         return buttonPane;
     }
+    
+    public void editDialog(){
+        JDialog dialog = new StageDialogPanel(StagesPane.this.agenda, model, (Stage) stagesList.getSelectedValue());
+        dialog.setLocation(getCenterOfScreen(dialog));
+        dialog.setLocationRelativeTo(null);
+        dialog.pack();
+        dialog.setVisible(true);
+    }
 
     private Point getCenterOfScreen(JDialog dialog){
         Toolkit toolkit = Toolkit.getDefaultToolkit();
@@ -138,3 +133,24 @@ class StageCellRenderer extends JLabel implements ListCellRenderer {
           return this;
     }   
 }
+
+class DoubleClickStage extends MouseAdapter {
+    protected JList list;
+    private StagesPane pane;
+
+    public DoubleClickStage(JList l, StagesPane pane){
+        this.pane = pane;
+        list = l;
+    }
+
+    public void mouseClicked(MouseEvent e){
+        if(e.getClickCount() == 2){
+            int index = list.locationToIndex(e.getPoint());
+            ListModel dlm = list.getModel();
+            Object item = dlm.getElementAt(index);;
+            list.ensureIndexIsVisible(index);
+            System.out.println("Double clicked on " + item);
+            this.pane.editDialog();
+        }
+    }
+}