OSDN Git Service

refactoring: removed code clone
authortama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Fri, 29 Jun 2007 08:49:47 +0000 (08:49 +0000)
committertama3 <tama3@acee48c3-7b26-0410-bdac-b3d0e5314bbc>
Fri, 29 Jun 2007 08:49:47 +0000 (08:49 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/stigmata/trunk@144 acee48c3-7b26-0410-bdac-b3d0e5314bbc

pom.xml
src/main/java/jp/naist/se/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractVisitor.java [deleted file]
src/main/java/jp/naist/se/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractor.java
src/main/java/jp/naist/se/stigmata/birthmarks/smc/SequentialMethodCallBirthmarkExtractVisitor.java
src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectablePane.java
src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectionCheckSetPane.java
src/main/java/jp/naist/se/stigmata/ui/swing/BirthmarkSelectionListPane.java
src/main/java/jp/naist/se/stigmata/ui/swing/ControlPane.java
src/main/java/jp/naist/se/stigmata/ui/swing/mds/MDSMethod.java

diff --git a/pom.xml b/pom.xml
index b811f4a..a6f1ed9 100755 (executable)
--- a/pom.xml
+++ b/pom.xml
@@ -188,14 +188,6 @@ The bug is that resource file is copied to target/classes directory, too.
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-pmd-plugin</artifactId>
       </plugin>
-      <!-- generate a cross references of source codes -->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>jxr-maven-plugin</artifactId>
-        <configuration>
-          <javadocDir>site/apidocs</javadocDir>
-        </configuration>
-      </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-javadoc-plugin</artifactId>
diff --git a/src/main/java/jp/naist/se/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractVisitor.java b/src/main/java/jp/naist/se/stigmata/birthmarks/fmc/FrequencyMethodCallBirthmarkExtractVisitor.java
deleted file mode 100755 (executable)
index 63b6949..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-package jp.naist.se.stigmata.birthmarks.fmc;\r
-\r
-/*\r
- * $Id$\r
- */\r
-\r
-import jp.naist.se.stigmata.Birthmark;\r
-import jp.naist.se.stigmata.BirthmarkContext;\r
-import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor;\r
-import jp.naist.se.stigmata.birthmarks.FrequencyBirthmarkElement;\r
-\r
-import org.objectweb.asm.ClassVisitor;\r
-import org.objectweb.asm.MethodAdapter;\r
-import org.objectweb.asm.MethodVisitor;\r
-\r
-/**\r
- * \r
- * \r
- *\r
- * @author Haruaki TAMADA\r
- * @version $Revision$ $Date$\r
- */\r
-public class FrequencyMethodCallBirthmarkExtractVisitor extends BirthmarkExtractVisitor{\r
-    public FrequencyMethodCallBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context){\r
-        super(visitor, birthmark, context);\r
-    }\r
-\r
-    public MethodVisitor visitMethod(int access, String name, String desc,\r
-                                      String signature, String[] exceptions){\r
-\r
-        MethodVisitor visitor = super.visitMethod(access, name, desc, signature, exceptions);\r
-\r
-        return new MethodAdapter(visitor){\r
-            public void visitMethodInsn(int opcode, String owner, String name, String desc){\r
-                String className = owner.replace('/', '.');\r
-                if(getContext().getWellknownClassManager().isWellKnownClass(className)){\r
-                    addElement(new FrequencyBirthmarkElement(className + "#" + name + desc));\r
-                }\r
-                super.visitMethodInsn(opcode, owner, name, desc);\r
-            }\r
-        };\r
-    }\r
-}\r
index 30b9891..db377ad 100755 (executable)
@@ -10,6 +10,8 @@ import jp.naist.se.stigmata.ExtractionUnit;
 import jp.naist.se.stigmata.birthmarks.ASMBirthmarkExtractor;
 import jp.naist.se.stigmata.birthmarks.BirthmarkExtractVisitor;
 import jp.naist.se.stigmata.birthmarks.FrequencyBirthmark;
+import jp.naist.se.stigmata.birthmarks.FrequencyBirthmarkElement;
+import jp.naist.se.stigmata.birthmarks.smc.SequentialMethodCallBirthmarkExtractVisitor;
 import jp.naist.se.stigmata.spi.BirthmarkSpi;
 
 import org.objectweb.asm.ClassWriter;
@@ -29,7 +31,12 @@ public class FrequencyMethodCallBirthmarkExtractor extends ASMBirthmarkExtractor
 
     @Override
     public BirthmarkExtractVisitor createExtractVisitor(ClassWriter writer, Birthmark birthmark, BirthmarkContext context){
-        return new FrequencyMethodCallBirthmarkExtractVisitor(writer, birthmark, context);
+        return new SequentialMethodCallBirthmarkExtractVisitor(writer, birthmark, context){
+            @Override
+            protected void addElement(String className, String methodName, String description){
+                addElement(new FrequencyBirthmarkElement(className + "#" + methodName + description));
+            }            
+        };
     }
 
     public ExtractionUnit[] getAcceptableUnits(){
index acf25e0..7a44d20 100644 (file)
@@ -33,10 +33,14 @@ public class SequentialMethodCallBirthmarkExtractVisitor extends BirthmarkExtrac
             public void visitMethodInsn(int opcode, String owner, String name, String desc){\r
                 String className = owner.replace('/', '.');\r
                 if(getContext().getWellknownClassManager().isWellKnownClass(className)){\r
-                    addElement(new MethodCallBirthmarkElement(className, name, desc));\r
+                    addElement(className, name, desc);\r
                 }\r
                 super.visitMethodInsn(opcode, owner, name, desc);\r
             }\r
         };\r
     }\r
+\r
+    protected void addElement(String className, String methodName, String description){\r
+        addElement(new MethodCallBirthmarkElement(className, methodName, description));\r
+    }\r
 }\r
index 52ea1ea..deb6434 100644 (file)
@@ -4,6 +4,14 @@ package jp.naist.se.stigmata.ui.swing;
  * $Id$\r
  */\r
 \r
+import java.util.ArrayList;\r
+import java.util.HashSet;\r
+import java.util.Iterator;\r
+import java.util.LinkedHashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.Set;\r
+\r
 import javax.swing.JPanel;\r
 \r
 import jp.naist.se.stigmata.spi.BirthmarkSpi;\r
@@ -14,21 +22,128 @@ import jp.naist.se.stigmata.spi.BirthmarkSpi;
  * @version $Revision$ $Date$\r
  */\r
 public abstract class BirthmarkSelectablePane extends JPanel implements BirthmarkServiceListener{\r
+    private StigmataFrame stigmata;\r
+    private Set<String> selectedServices = new HashSet<String>();\r
+    private Map<String, BirthmarkSelection> services;\r
+    private List<DataChangeListener> listeners = new ArrayList<DataChangeListener>();\r
+    private boolean expertmode;\r
+\r
+    public BirthmarkSelectablePane(StigmataFrame stigmata){\r
+        this.stigmata = stigmata;\r
+\r
+        initServices();\r
+        stigmata.addBirthmarkServiceListener(this);\r
+    }\r
+\r
+    protected abstract void updateLayouts();\r
+\r
+    public void setExpertMode(boolean expertmode){\r
+        this.expertmode = expertmode;\r
+        updateLayouts();\r
+    }\r
+\r
+    public boolean isExpertMode(){\r
+        return expertmode;\r
+    }\r
+\r
+    public String[] getSelectedServiceTypes(){\r
+        return selectedServices.toArray(new String[selectedServices.size()]);\r
+    }\r
+\r
+    public BirthmarkSpi getService(String type){\r
+        BirthmarkSelection elem = services.get(type);\r
+        if(elem != null){\r
+            return elem.getService();\r
+        }\r
+    \r
+        return null;\r
+    }\r
+\r
+    public String[] getServiceTypes(){\r
+        String[] serviceArray = new String[services.size()];\r
+        int index = 0;\r
+        for(String key: services.keySet()){\r
+            BirthmarkSpi service = services.get(key).getService();\r
+            serviceArray[index] = service.getType();\r
+            index++;\r
+        }\r
+        return serviceArray;\r
+    }\r
+\r
+    public boolean hasService(String type){\r
+        return services.get(type) != null;\r
+    }\r
+\r
+    public void select(String type, boolean flag){\r
+        if(flag){\r
+            selectedServices.add(type);\r
+        }\r
+        else{\r
+            selectedServices.remove(type);\r
+        }\r
+        fireEvent();\r
+    }\r
+\r
+    public void select(BirthmarkSpi service, boolean flag){\r
+        select(service.getType(), flag);\r
+    }\r
+\r
+    public void reset(){\r
+        selectedServices.clear();\r
+        initServices();\r
+        expertmode = false;\r
+        updateLayouts();\r
+        fireEvent();\r
+    }\r
 \r
-    public abstract void setExpertMode(boolean expertmode);\r
+    public void addDataChangeListener(DataChangeListener listener){\r
+        listeners.add(listener);\r
+    }\r
 \r
-    public abstract boolean isExpertMode();\r
+    public void serviceAdded(BirthmarkSpi service){\r
+        if(services.get(service.getType()) == null){\r
+            BirthmarkSelection elem = new BirthmarkSelection(service);\r
+            selectedServices.add(service.getType());\r
+            services.put(service.getType(), elem);\r
+        }\r
+        updateLayouts();\r
+        fireEvent();\r
+    }\r
 \r
-    public abstract void reset();\r
+    public void serviceRemoved(BirthmarkSpi service){\r
+        BirthmarkSelection elem = services.get(service);\r
+        if(elem != null){\r
+            selectedServices.remove(service);\r
+            services.remove(service);\r
+        }\r
+        fireEvent();\r
+    }\r
 \r
-    public abstract void addDataChangeListener(DataChangeListener listener);\r
+    public Iterator<String> serviceNames(){\r
+        return services.keySet().iterator();\r
+    }\r
 \r
-    public abstract String[] getServices();\r
+    protected BirthmarkSelection getSelection(String type){\r
+        return services.get(type);\r
+    }\r
 \r
-    public abstract String[] getSelectedServices();\r
+    protected Iterator<BirthmarkSelection> birthmarkSelections(){\r
+        return services.values().iterator();\r
+    }\r
 \r
-    public abstract void serviceAdded(BirthmarkSpi service);\r
+    protected void fireEvent(){\r
+        for(DataChangeListener listener: listeners){\r
+            listener.valueChanged(this);\r
+        }\r
+    }\r
 \r
-    public abstract BirthmarkSpi getService(String type);\r
+    private void initServices(){\r
+        BirthmarkSpi[] serviceArray = stigmata.getContext().getServices();\r
 \r
+        services = new LinkedHashMap<String, BirthmarkSelection>();\r
+        for(BirthmarkSpi service: serviceArray){\r
+            BirthmarkSelection elem = new BirthmarkSelection(service);\r
+            services.put(service.getType(), elem);\r
+        }\r
+    }\r
 }
\ No newline at end of file
index 7898531..18ebcfa 100644 (file)
@@ -9,41 +9,27 @@ import java.awt.Dimension;
 import java.awt.GridLayout;\r
 import java.awt.event.ActionEvent;\r
 import java.awt.event.ActionListener;\r
-import java.util.ArrayList;\r
-import java.util.HashSet;\r
-import java.util.LinkedHashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
+import java.util.Iterator;\r
 \r
 import javax.swing.Box;\r
 import javax.swing.JButton;\r
 import javax.swing.JCheckBox;\r
 import javax.swing.JPanel;\r
 \r
-import jp.naist.se.stigmata.spi.BirthmarkSpi;\r
-\r
 /**\r
  *\r
  * @author Haruaki TAMADA\r
  * @version $Revision$ $Date$\r
  */\r
-public class BirthmarkSelectionCheckSetPane extends BirthmarkSelectablePane implements BirthmarkServiceListener{\r
+public class BirthmarkSelectionCheckSetPane extends BirthmarkSelectablePane{\r
     private static final long serialVersionUID = 3209854654743223453L;\r
 \r
-    private StigmataFrame stigmata;\r
-    private List<DataChangeListener> listeners = new ArrayList<DataChangeListener>();\r
-    private Set<String> selectedServices = new HashSet<String>();\r
-    private Map<String, BirthmarkSelection> services;\r
-    private boolean expertmode = false;\r
     private JPanel checks = new JPanel();\r
 \r
     public BirthmarkSelectionCheckSetPane(StigmataFrame stigmata){\r
-        this.stigmata = stigmata;\r
+        super(stigmata);\r
 \r
         initLayouts();\r
-        initServices();\r
-        stigmata.addBirthmarkServiceListener(this);\r
     }\r
 \r
     private void initLayouts(){\r
@@ -64,181 +50,51 @@ public class BirthmarkSelectionCheckSetPane extends BirthmarkSelectablePane impl
         ActionListener listener = new ActionListener(){\r
             public void actionPerformed(ActionEvent e){\r
                 boolean flag = e.getActionCommand().equals("checkall");\r
-                for(String key: services.keySet()){\r
-                    BirthmarkSelection le = services.get(key);\r
+                for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){\r
+                    BirthmarkSelection le = i.next();\r
                     le.setSelected(flag);\r
-                    updateLayouts();\r
                     fireEvent();\r
                 }\r
+                updateLayouts();\r
             }\r
         };\r
         checkAll.addActionListener(listener);\r
         uncheckAll.addActionListener(listener);\r
     }\r
 \r
-    public void select(BirthmarkSpi service, boolean flag){\r
-        if(flag){\r
-            selectedServices.add(service.getType());\r
-        }\r
-        else{\r
-            selectedServices.remove(service.getType());\r
-        }\r
-        fireEvent();\r
-    }\r
-\r
-    public void refresh(){\r
-        initServices();\r
-        updateLayouts();\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see jp.naist.se.stigmata.ui.swing.BirthmarkSelectable#setExpertMode(boolean)\r
-     */\r
-    public void setExpertMode(boolean expertmode){\r
-        this.expertmode = expertmode;\r
-        updateLayouts();\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see jp.naist.se.stigmata.ui.swing.BirthmarkSelectable#isExpertMode()\r
-     */\r
-    public boolean isExpertMode(){\r
-        return expertmode;\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see jp.naist.se.stigmata.ui.swing.BirthmarkSelectable#reset()\r
-     */\r
-    public void reset(){\r
-        selectedServices.clear();\r
-        initServices();\r
-        expertmode = false;\r
-        updateLayouts();\r
-        fireEvent();\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see jp.naist.se.stigmata.ui.swing.BirthmarkSelectable#addDataChangeListener(jp.naist.se.stigmata.ui.swing.DataChangeListener)\r
-     */\r
-    public void addDataChangeListener(DataChangeListener listener){\r
-        listeners.add(listener);\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see jp.naist.se.stigmata.ui.swing.BirthmarkSelectable#getServices()\r
-     */\r
-    public String[] getServices(){\r
-        String[] serviceArray = new String[services.size()];\r
-        int index = 0;\r
-        for(String key: services.keySet()){\r
-            BirthmarkSpi service = services.get(key).getService();\r
-            serviceArray[index] = service.getType();\r
-            index++;\r
-        }\r
-        return serviceArray;\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see jp.naist.se.stigmata.ui.swing.BirthmarkSelectable#getSelectedServices()\r
-     */\r
-    public String[] getSelectedServices(){\r
-        return selectedServices.toArray(new String[selectedServices.size()]);\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see jp.naist.se.stigmata.ui.swing.BirthmarkSelectable#addService(jp.naist.se.stigmata.spi.BirthmarkSpi)\r
-     */\r
-    public void serviceAdded(BirthmarkSpi service){\r
-        if(services.get(service.getType()) == null){\r
-            BirthmarkSelection elem = new BirthmarkSelection(service);\r
-            selectedServices.add(service.getType());\r
-            services.put(service.getType(), elem);\r
-        }\r
-        updateLayouts();\r
-        fireEvent();\r
-    }\r
-\r
-    /* (non-Javadoc)\r
-     * @see jp.naist.se.stigmata.ui.swing.BirthmarkSelectable#getService(java.lang.String)\r
-     */\r
-    public BirthmarkSpi getService(String type){\r
-        BirthmarkSelection elem = services.get(type);\r
-        if(elem != null){\r
-            return elem.getService();\r
-        }\r
-\r
-        return null;\r
-    }\r
-\r
-    public boolean hasService(String type){\r
-        return services.get(type) != null;\r
-    }\r
-\r
-    public void serviceRemoved(BirthmarkSpi service){\r
-        BirthmarkSelection elem = services.get(service.getType());\r
-        if(elem != null){\r
-            selectedServices.remove(service.getType());\r
-            services.remove(service.getType());\r
-        }\r
-        updateLayouts();\r
-        fireEvent();\r
-    }\r
-\r
-    private void fireEvent(){\r
-        for(DataChangeListener listener: listeners){\r
-            listener.valueChanged(this);\r
-        }\r
-    }\r
-\r
     /**\r
      * update layouts and update selected birthmarks list.\r
      */\r
-    private void updateLayouts(){\r
+    protected void updateLayouts(){\r
         checks.removeAll();\r
         Dimension d = calculateDimension();\r
         checks.setLayout(new GridLayout(d.height, d.width));\r
 \r
-        for(String key: services.keySet()){\r
-            final BirthmarkSelection elem = services.get(key);\r
+        for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){\r
+            final BirthmarkSelection elem = i.next();\r
             if(elem.isVisible(isExpertMode())){\r
                 JCheckBox check = new JCheckBox(elem.getService().getDisplayType());\r
                 check.setSelected(elem.isSelected());\r
                 check.addActionListener(new ActionListener(){\r
                     public void actionPerformed(ActionEvent e){\r
                         JCheckBox c = (JCheckBox)e.getSource();\r
-                        if(c.isSelected()) selectedServices.add(elem.getService().getType());\r
-                        else               selectedServices.remove(elem.getService().getType());\r
+                        select(elem.getService().getType(), c.isSelected());\r
                         fireEvent();\r
                     }\r
                 });\r
                 checks.add(check);\r
             }\r
 \r
-            if(elem.isVisible(isExpertMode()) && elem.isSelected()){ \r
-                selectedServices.add(elem.getType());\r
-            }\r
-            else{\r
-                selectedServices.remove(elem.getType());\r
-            }\r
+            select(elem.getType(), elem.isVisible(isExpertMode()) && elem.isSelected());\r
         }\r
         updateUI();\r
     }\r
 \r
-    private void initServices(){\r
-        BirthmarkSpi[] serviceArray = stigmata.getContext().getServices();\r
-\r
-        services = new LinkedHashMap<String, BirthmarkSelection>();\r
-        for(BirthmarkSpi service: serviceArray){\r
-            BirthmarkSelection elem = new BirthmarkSelection(service);\r
-            services.put(service.getType(), elem);\r
-        }\r
-    }\r
-\r
     private Dimension calculateDimension(){\r
         int rows = 1;\r
         int cols = 0;\r
-        for(String key: services.keySet()){\r
-            BirthmarkSelection selection = services.get(key);\r
+        for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){\r
+            BirthmarkSelection selection = i.next();\r
             if(selection.isVisible(isExpertMode())){\r
                 cols++;\r
             }\r
index 618ccac..7eadf4c 100644 (file)
@@ -5,20 +5,12 @@ package jp.naist.se.stigmata.ui.swing;
  */\r
 \r
 import java.awt.BorderLayout;\r
-import java.awt.Color;\r
 import java.awt.Component;\r
-import java.awt.Dimension;\r
-import java.awt.SystemColor;\r
 import java.awt.event.ActionEvent;\r
 import java.awt.event.ActionListener;\r
 import java.awt.event.MouseAdapter;\r
 import java.awt.event.MouseEvent;\r
-import java.util.ArrayList;\r
-import java.util.HashSet;\r
-import java.util.LinkedHashMap;\r
-import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
+import java.util.Iterator;\r
 \r
 import javax.swing.Box;\r
 import javax.swing.DefaultListModel;\r
@@ -27,6 +19,9 @@ import javax.swing.JCheckBox;
 import javax.swing.JList;\r
 import javax.swing.JScrollPane;\r
 import javax.swing.ListCellRenderer;\r
+import javax.swing.UIManager;\r
+import javax.swing.border.Border;\r
+import javax.swing.border.EmptyBorder;\r
 \r
 import jp.naist.se.stigmata.spi.BirthmarkSpi;\r
 \r
@@ -35,24 +30,23 @@ import jp.naist.se.stigmata.spi.BirthmarkSpi;
  * @author Haruaki TAMADA\r
  * @version $Revision$ $Date$\r
  */\r
-public class BirthmarkSelectionListPane extends BirthmarkSelectablePane implements BirthmarkServiceListener{\r
+public class BirthmarkSelectionListPane extends BirthmarkSelectablePane{\r
     private static final long serialVersionUID = 3209854654743223453L;\r
 \r
-    private StigmataFrame stigmata;\r
-    private List<DataChangeListener> listeners = new ArrayList<DataChangeListener>();\r
-    private Set<String> selectedServices = new HashSet<String>();\r
-    private Map<String, BirthmarkSelection> services;\r
-    private boolean expertmode = false;\r
     private DefaultListModel model;\r
     private JList list;\r
 \r
     public BirthmarkSelectionListPane(StigmataFrame stigmata){\r
-        this.stigmata = stigmata;\r
+        super(stigmata);\r
 \r
         initLayouts();\r
-        initServices();\r
+    }\r
 \r
-        stigmata.addBirthmarkServiceListener(this);\r
+    public void serviceRemoved(BirthmarkSpi service){\r
+        BirthmarkSelection elem = getSelection(service.getType());\r
+        model.removeElement(elem);\r
+        \r
+        super.serviceRemoved(service);\r
     }\r
 \r
     private void initLayouts(){\r
@@ -60,7 +54,7 @@ public class BirthmarkSelectionListPane extends BirthmarkSelectablePane implemen
         list = new JList(model = new DefaultListModel());\r
         JScrollPane scroll = new JScrollPane(list);\r
         add(scroll, BorderLayout.CENTER);\r
-        list.setCellRenderer(new BirthmarkServiceListCellRenderer(new Dimension(250, 20), 60));\r
+        list.setCellRenderer(new Renderer());\r
         list.setVisibleRowCount(5);\r
         JButton checkAll = Utility.createButton("checkall");\r
         JButton uncheckAll = Utility.createButton("uncheckall");\r
@@ -76,12 +70,12 @@ public class BirthmarkSelectionListPane extends BirthmarkSelectablePane implemen
         ActionListener listener = new ActionListener(){\r
             public void actionPerformed(ActionEvent e){\r
                 boolean flag = e.getActionCommand().equals("checkall");\r
-                for(String key: services.keySet()){\r
-                    BirthmarkSelection le = services.get(key);\r
+                for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){\r
+                    BirthmarkSelection le = i.next();\r
                     le.setSelected(flag);\r
-                    updateUI();\r
                     fireEvent();\r
                 }\r
+                updateUI();\r
             }\r
         };\r
         checkAll.addActionListener(listener);\r
@@ -98,130 +92,26 @@ public class BirthmarkSelectionListPane extends BirthmarkSelectablePane implemen
         });\r
     }\r
 \r
-    public void select(BirthmarkSpi service, boolean flag){\r
-        if(flag){\r
-            selectedServices.add(service.getType());\r
-        }\r
-        else{\r
-            selectedServices.remove(service.getType());\r
-        }\r
-        fireEvent();\r
-    }\r
-\r
-    public void refresh(){\r
-        initServices();\r
-        updateLayouts();\r
-    }\r
-\r
-    public void setExpertMode(boolean expertmode){\r
-        this.expertmode = expertmode;\r
-        updateLayouts();\r
-    }\r
-\r
-    public boolean isExpertMode(){\r
-        return expertmode;\r
-    }\r
-\r
-    public void reset(){\r
-        selectedServices.clear();\r
-        initServices();\r
-        expertmode = false;\r
-        updateLayouts();\r
-        fireEvent();\r
-    }\r
-\r
-    public void addDataChangeListener(DataChangeListener listener){\r
-        listeners.add(listener);\r
-    }\r
-\r
-    public String[] getServices(){\r
-        String[] serviceArray = new String[services.size()];\r
-        int index = 0;\r
-        for(String key: services.keySet()){\r
-            BirthmarkSpi service = services.get(key).getService();\r
-            serviceArray[index] = service.getType();\r
-            index++;\r
-        }\r
-        return serviceArray;\r
-    }\r
-\r
-    public String[] getSelectedServices(){\r
-        return selectedServices.toArray(new String[selectedServices.size()]);\r
-    }\r
-\r
-    public void serviceAdded(BirthmarkSpi service){\r
-        if(services.get(service.getType()) == null){\r
-            BirthmarkSelection elem = new BirthmarkSelection(service);\r
-            selectedServices.add(service.getType());\r
-            services.put(service.getType(), elem);\r
-        }\r
-        updateLayouts();\r
-        fireEvent();\r
-    }\r
-\r
-    public BirthmarkSpi getService(String type){\r
-        BirthmarkSelection elem = services.get(type);\r
-        if(elem != null){\r
-            return elem.getService();\r
-        }\r
-\r
-        return null;\r
-    }\r
-\r
-    public boolean hasService(String type){\r
-        return services.get(type) != null;\r
-    }\r
-\r
-    public void serviceRemoved(BirthmarkSpi service){\r
-        BirthmarkSelection elem = services.get(service);\r
-        if(elem != null){\r
-            model.removeElement(elem);\r
-            selectedServices.remove(service);\r
-            services.remove(service);\r
-        }\r
-        fireEvent();\r
-    }\r
-\r
-    private void fireEvent(){\r
-        for(DataChangeListener listener: listeners){\r
-            listener.valueChanged(this);\r
-        }\r
-    }\r
-\r
     /**\r
      * update layouts and update selected birthmarks list.\r
      */\r
-    private void updateLayouts(){\r
+    protected void updateLayouts(){\r
         model.removeAllElements();\r
 \r
-        for(String key: services.keySet()){\r
-            BirthmarkSelection elem = services.get(key);\r
+        for(Iterator<BirthmarkSelection> i = birthmarkSelections(); i.hasNext(); ){\r
+            BirthmarkSelection elem = i.next();\r
             if(elem.isVisible(isExpertMode())){\r
                 model.addElement(elem);\r
             }\r
 \r
-            if(elem.isVisible(isExpertMode()) && elem.isSelected()){ \r
-                selectedServices.add(elem.getType());\r
-            }\r
-            else{\r
-                selectedServices.remove(elem.getType());\r
-            }\r
+            select(elem.getType(), elem.isVisible(isExpertMode()) && elem.isSelected());\r
         }\r
         updateUI();\r
     }\r
 \r
-    private void initServices(){\r
-        BirthmarkSpi[] serviceArray = stigmata.getContext().getServices();\r
-\r
-        services = new LinkedHashMap<String, BirthmarkSelection>();\r
-        for(BirthmarkSpi service: serviceArray){\r
-            BirthmarkSelection elem = new BirthmarkSelection(service);\r
-            services.put(service.getType(), elem);\r
-        }\r
-    }\r
-\r
     public static class Renderer extends JCheckBox implements ListCellRenderer{\r
         private static final long serialVersionUID = -324432943654654L;\r
+        private static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);\r
 \r
         public Renderer(){\r
             setOpaque(true);\r
@@ -233,8 +123,27 @@ public class BirthmarkSelectionListPane extends BirthmarkSelectablePane implemen
             setToolTipText(elem.getService().getDescription());\r
             setSelected(elem.isSelected());\r
 \r
-            setBackground(isSelected ? SystemColor.textHighlight: Color.white);\r
-            setForeground(isSelected ? SystemColor.textHighlightText: Color.black);\r
+            if(isSelected){\r
+                setBackground(list.getSelectionBackground());\r
+                setForeground(list.getSelectionForeground());\r
+            }\r
+            else{\r
+                setBackground(list.getBackground());\r
+                setForeground(list.getForeground());\r
+            }\r
+\r
+            Border border = null;\r
+            if(forcus) {\r
+                if (isSelected) {\r
+                    border = UIManager.getBorder("List.focusSelectedCellHighlightBorder");\r
+                }\r
+                if (border == null) {\r
+                    border = UIManager.getBorder("List.focusCellHighlightBorder");\r
+                }\r
+            } else {\r
+                border = noFocusBorder;\r
+            }\r
+            setBorder(border);\r
 \r
             return this;\r
         }\r
index c937521..1b16d72 100644 (file)
@@ -65,7 +65,7 @@ public class ControlPane extends JPanel{
 \r
     void inititalize(){\r
         definition = new BirthmarkDefinitionPane(stigmata);\r
-        birthmarks = new BirthmarkSelectionCheckSetPane(stigmata);\r
+        birthmarks = new BirthmarkSelectionListPane(stigmata);\r
         properties = new PropertyEditPane(stigmata);\r
         JComponent control = createControlPane();\r
         wellknownClassses = new WellknownClassesSettingsPane(stigmata);\r
@@ -207,7 +207,7 @@ public class ControlPane extends JPanel{
     private void updateEnable(){\r
         String[] valueX = targetX.getValues();\r
         String[] valueY = targetY.getValues();\r
-        String[] targets = birthmarks.getSelectedServices();\r
+        String[] targets = birthmarks.getSelectedServiceTypes();\r
 \r
         extractButton.setEnabled(\r
             ((valueX != null && valueX.length > 0) || (valueY != null && valueY.length > 0))\r
@@ -238,7 +238,7 @@ public class ControlPane extends JPanel{
         }\r
 \r
         stigmata.extract(\r
-            birthmarks.getSelectedServices(), \r
+            birthmarks.getSelectedServiceTypes(), \r
             targets.toArray(new String[targets.size()]), context\r
         );\r
     }\r
@@ -257,7 +257,7 @@ public class ControlPane extends JPanel{
             String[] filterSetList = pane.getSelectedFilters();\r
 \r
             stigmata.compareRoundRobin(\r
-                birthmarks.getSelectedServices(), targetX.getValues(),\r
+                birthmarks.getSelectedServiceTypes(), targetX.getValues(),\r
                 targetY.getValues(), filterSetList, context\r
             );\r
         }\r
@@ -267,7 +267,7 @@ public class ControlPane extends JPanel{
         BirthmarkContext context = generateContext();\r
 \r
         stigmata.compareRoundRobin(\r
-            birthmarks.getSelectedServices(), targetX.getValues(), \r
+            birthmarks.getSelectedServiceTypes(), targetX.getValues(), \r
             targetY.getValues(), context\r
         );\r
     }\r
@@ -276,7 +276,7 @@ public class ControlPane extends JPanel{
         BirthmarkContext context = generateContext();\r
         String[] fileX = targetX.getValues();\r
         String[] fileY = targetY.getValues();\r
-        stigmata.compareSpecifiedPair(birthmarks.getSelectedServices(), fileX,\r
+        stigmata.compareSpecifiedPair(birthmarks.getSelectedServiceTypes(), fileX,\r
                 fileY, context);\r
     }\r
 \r
@@ -285,7 +285,7 @@ public class ControlPane extends JPanel{
         String[] fileX = targetX.getValues();\r
         String[] fileY = targetY.getValues();\r
 \r
-        stigmata.compareGuessedPair(birthmarks.getSelectedServices(), fileX,\r
+        stigmata.compareGuessedPair(birthmarks.getSelectedServiceTypes(), fileX,\r
                 fileY, context);\r
     }\r
 \r
index 7f2f689..6be7fc3 100644 (file)
@@ -114,21 +114,4 @@ public class MDSMethod{
 \r
         indexes = index;\r
     }\r
-\r
-    public static void main(String[] args){\r
-        Matrix matrix = new Matrix(new double[][]{\r
-            {    0,  587, 1212,  701, 1936,  604,  748, 2139, 2182,  543, },\r
-            {  587,    0,  920,  940, 1745, 1188,  713, 1858, 1737,  597, },\r
-            { 1212,  920,    0,  879,  831, 1726, 1631,  949, 1021, 1494, },\r
-            {  701,  940,  879,    0, 1374,  968, 1420, 1645, 1891, 1220, },\r
-            { 1936, 1745,  831, 1374,    0, 2339, 2451,  347,  959, 2300, },\r
-            {  604, 1188, 1726,  968, 2339,    0, 1092, 2592, 2734,  923, },\r
-            {  748,  713, 1631, 1420, 2451, 1092,    0, 2571, 2408,  205, },\r
-            { 2139, 1858,  949, 1645,  347, 2594, 2571,    0,  678, 2442, },\r
-            { 2182, 1737, 1021, 1891,  959, 2734, 2408,  678,    0, 2329, },\r
-            {  543,  597, 1494, 1220, 2300,  923,  205, 2442, 2329,    0, },\r
-        });\r
-        MDSMethod mds = new MDSMethod(matrix);\r
-        System.out.println(mds.getCoordinateMatrix());\r
-    }\r
 }\r