<artifactId>maven-surefire-plugin</artifactId>
<version>2.3</version>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-site-plugin</artifactId>
+ <configuration>
+ <inputEncoding>utf-8</inputEncoding>
+ <outputEncoding>utf-8</outputEncoding>
+ <locales>en</locales>
+ </configuration>
+ </plugin>
</plugins>
</build>
package jp.naist.se.stigmata.birthmarks;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import java.lang.reflect.Constructor;\r
* configuration files.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class BirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{\r
private Class<? extends BirthmarkExtractor> extractorClass;\r
package jp.naist.se.stigmata.birthmarks.comparators;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import java.lang.reflect.Constructor;\r
* Abstract service provider interface for comparing birthmarks.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
abstract class AbstractBirthmarkComparatorService extends AbstractServiceProvider implements BirthmarkComparatorSpi{\r
/**\r
package jp.naist.se.stigmata.birthmarks.comparators;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkComparator;\r
* Comparing birthmarks by DP matching algorithm.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class DPMatchingBirthmarkComparatorService extends AbstractBirthmarkComparatorService{\r
/**\r
package jp.naist.se.stigmata.birthmarks.comparators;
/*
- * $Id: DPMatchingBirthmarkComparator.java 53 2007-02-22 02:46:40Z tama3 $
+ * $Id$
*/
import jp.naist.se.stigmata.Birthmark;
* algorithm (levenshtein distance).
*
* @author Haruaki TAMADA
- * @version $Revision: 53 $ $Date: 2007-02-22 11:46:40 +0900 (Thu, 22 Feb 2007) $
+ * @version $Revision$ $Date$
*/
public class EditDistanceBirthmarkComparator implements BirthmarkComparator{
private BirthmarkSpi spi;
package jp.naist.se.stigmata.birthmarks.comparators;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkComparator;\r
* Comparing birthmarks by edit distance algorithm.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class EditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{\r
/**\r
package jp.naist.se.stigmata.birthmarks.comparators;
/*
- * $Id: DPMatchingBirthmarkComparator.java 53 2007-02-22 02:46:40Z tama3 $
+ * $Id$
*/
import jp.naist.se.stigmata.Birthmark;
* algorithm (levenshtein distance).
*
* @author Haruaki TAMADA
- * @version $Revision: 53 $ $Date: 2007-02-22 11:46:40 +0900 (Thu, 22 Feb 2007) $
+ * @version $Revision$ $Date$
*/
public class ExtendedEditDistanceBirthmarkComparator extends EditDistanceBirthmarkComparator{
public ExtendedEditDistanceBirthmarkComparator(){
package jp.naist.se.stigmata.birthmarks.comparators;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkComparator;\r
* Comparing birthmarks by extended edit distance algorithm.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class ExtendedEditDistanceBirthmarkComparatorService extends AbstractBirthmarkComparatorService{\r
/**\r
package jp.naist.se.stigmata.birthmarks.comparators;
/*
- * $Id: PlainBirthmarkComparator.java 20 2007-01-17 02:06:01Z tama3 $
+ * $Id$
*/
import java.util.Set;
* similarity of those birthmarks are defined by |f(p) and f(q)|/|f(p) or f(q)|.
*
* @author Haruaki TAMADA
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $
+ * @version $Revision$ $Date$
*/
public class LogicalAndBirthmarkComparator implements BirthmarkComparator{
private BirthmarkSpi spi;
package jp.naist.se.stigmata.birthmarks.comparators;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkComparator;\r
* Comparing birthmarks by logical AND algorithm.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class LogicalAndBirthmarkComparatorService extends AbstractBirthmarkComparatorService{\r
/**\r
package jp.naist.se.stigmata.birthmarks.comparators;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkComparator;\r
* Comparing birthmarks by default matching algorithm.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class PlainBirthmarkComparatorService extends AbstractBirthmarkComparatorService{\r
/**\r
package jp.naist.se.stigmata.birthmarks.extractors;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import java.lang.reflect.Constructor;\r
* Birthmark Service Provider Interface.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
abstract class AbstractBirthmarkExtractorService extends AbstractServiceProvider implements BirthmarkExtractorSpi{\r
/**\r
package jp.naist.se.stigmata.birthmarks.extractors;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkExtractor;\r
* Birthmark Service Provider Interface.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class ConstantValueOfFieldVariableBirthmarkExtractorService extends AbstractBirthmarkExtractorService{\r
\r
package jp.naist.se.stigmata.birthmarks.extractors;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkExtractor;\r
* Birthmark Service Provider Interface.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class InheritanceStructureBirthmarkExtractorService extends AbstractBirthmarkExtractorService{\r
\r
package jp.naist.se.stigmata.birthmarks.extractors;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkExtractor;\r
* Birthmark Service Provider Interface.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class KGramBasedBirthmarkExtractorService extends AbstractBirthmarkExtractorService{\r
\r
package jp.naist.se.stigmata.birthmarks.extractors;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkExtractor;\r
* Birthmark Service Provider Interface.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class SequentialMethodCallBirthmarkExtractorService extends AbstractBirthmarkExtractorService{\r
\r
package jp.naist.se.stigmata.birthmarks.extractors;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkExtractor;\r
* Birthmark Service Provider Interface.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class UsedClassesBirthmarkExtractorService extends AbstractBirthmarkExtractorService{\r
\r
package jp.naist.se.stigmata.birthmarks.kgram;\r
\r
/*\r
- * $Id: ConstantValueOfFieldVariableBirthmarkExtractVisitor.java 59 2007-03-03 03:42:06Z tama3 $\r
+ * $Id$\r
*/\r
\r
import java.util.ArrayList;\r
/**\r
* \r
* @author Haruaki TAMADA\r
- * @version $Revision: 59 $ $Date: 2007-03-03 12:42:06 +0900 (Sat, 03 Mar 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class KGramBasedBirthmarkExtractVisitor extends BirthmarkExtractVisitor{\r
private int kvalue;\r
package jp.naist.se.stigmata.birthmarks.kgram;
/*
- * $Id: SequentialMethodCallBirthmarkExtractor.java 66 2007-03-03 15:11:35Z tama3 $
+ * $Id$
*/
import jp.naist.se.stigmata.Birthmark;
/**
* @author Haruaki TAMADA
- * @version $Revision: 66 $ $Date: 2007-03-04 00:11:35 +0900 (Sun, 04 Mar 2007) $
+ * @version $Revision$ $Date$
*/
public class KGramBasedBirthmarkExtractor extends ASMBirthmarkExtractor{
private int kvalue = 4;
package jp.naist.se.stigmata.birthmarks.kgram;\r
\r
/*\r
- * $Id: ConstantValueOfFieldVariableBirthmarkService.java 59 2007-03-03 03:42:06Z tama3 $\r
+ * $Id$\r
*/\r
\r
import jp.naist.se.stigmata.BirthmarkComparator;\r
* \r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 59 $ $Date: 2007-03-03 12:42:06 +0900 (Sat, 03 Mar 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class KGramBasedBirthmarkService extends AbstractBirthmarkService implements BirthmarkSpi{\r
private BirthmarkComparator comparator = new LogicalAndBirthmarkComparator(this);\r
package jp.naist.se.stigmata.filter;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.util.Locale;\r
\r
import jp.naist.se.stigmata.spi.AbstractServiceProvider;\r
import jp.naist.se.stigmata.spi.ComparisonPairFilterSpi;\r
import jp.naist.se.stigmata.utils.LocalizedDescriptionManager;\r
\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
abstract class AbstractComparisonPairFilterService extends AbstractServiceProvider implements ComparisonPairFilterSpi{\r
public String getDescription(Locale locale){\r
return LocalizedDescriptionManager.getInstance().getDescription(\r
package jp.naist.se.stigmata.filter;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import jp.naist.se.stigmata.ComparisonPairFilter;\r
\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public class SimilarityComparisonPairFilterService extends AbstractComparisonPairFilterService{\r
public ComparisonPairFilter getFilter(){\r
return new SimilarityComparisonPairFilter(this);\r
package jp.naist.se.stigmata.spi;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import java.util.Locale;\r
* Service provider interface for comparing birthmarks.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public interface BirthmarkComparatorSpi extends ServiceProvider{\r
/**\r
package jp.naist.se.stigmata.spi;\r
\r
/*\r
- * $Id: BirthmarkSpi.java 20 2007-01-17 02:06:01Z tama3 $\r
+ * $Id$\r
*/\r
\r
import java.util.Locale;\r
* Service provider interface for extracting birhtmark from given class files.\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 20 $ $Date: 2007-01-17 11:06:01 +0900 (Wed, 17 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public interface BirthmarkExtractorSpi extends ServiceProvider{\r
/**\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.io.IOException;\r
+import java.io.PrintWriter;\r
+\r
+/**\r
+ *\r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+public interface AsciiDataWritable{\r
+ public void writeAsciiData(PrintWriter out, String format) throws IOException, UnsupportedFormatException;\r
+}\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.io.IOException;\r
+import java.io.OutputStream;\r
+\r
+/**\r
+ * @author Haruaki Tamada\r
+ * @version $Revision$ $Date$\r
+ */\r
+public interface BinaryDataWritable{\r
+ public void writeBinaryData(OutputStream out, String format) throws IOException, UnsupportedFormatException;\r
+}\r
+++ /dev/null
-package jp.naist.se.stigmata.ui.swing;\r
-\r
-/*\r
- * $Id$\r
- */\r
-\r
-import java.io.IOException;\r
-import java.io.PrintWriter;\r
-\r
-import jp.naist.se.stigmata.spi.ResultFormatSpi;\r
-\r
-/**\r
- *\r
- * @author Haruaki TAMADA\r
- * @version $Revision$ $Date$\r
- */\r
-public interface BirthmarkDataWritable{\r
- public void writeData(PrintWriter out, ResultFormatSpi service) throws IOException;\r
-}\r
package jp.naist.se.stigmata.ui.swing;\r
\r
/*\r
- * $Id: BirthmarkSelectionPane.java 24 2007-01-30 15:08:43Z tama3 $\r
+ * $Id$\r
*/\r
\r
import java.awt.BorderLayout;\r
/**\r
* \r
* @author Haruaki TAMADA\r
- * @version $Revision: 24 $ $Date: 2007-01-31 00:08:43 +0900 (Wed, 31 Jan 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class BirthmarkDefinitionPane extends JPanel{\r
private static final long serialVersionUID = 3932637653297802978L;\r
*/\r
\r
import java.awt.BorderLayout;\r
-import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
import java.io.PrintWriter;\r
import java.util.Arrays;\r
import java.util.List;\r
import jp.naist.se.stigmata.BirthmarkContext;\r
import jp.naist.se.stigmata.BirthmarkSet;\r
import jp.naist.se.stigmata.format.BirthmarkExtractionResultFormat;\r
+import jp.naist.se.stigmata.format.FormatManager;\r
import jp.naist.se.stigmata.spi.ResultFormatSpi;\r
+import jp.naist.se.stigmata.ui.swing.actions.SaveAction;\r
\r
/**\r
* @author Haruaki TAMADA\r
* @version $Revision$ $Date$\r
*/\r
-public class BirthmarkExtractionResultPane extends JPanel implements BirthmarkDataWritable{\r
+public class BirthmarkExtractionResultPane extends JPanel{\r
private static final long serialVersionUID = 239084365756236543L;\r
\r
private List<BirthmarkSet> birthmarks;\r
this.birthmarks = Arrays.asList(sets);\r
\r
JComponent southPanel = Box.createHorizontalBox(); \r
- JButton saveButton = Utility.createButton("savebirthmark");\r
+ JButton saveButton = Utility.createButton("savebirthmark", new SaveAction(frame, new AsciiDataWritable(){\r
+ public void writeAsciiData(PrintWriter out, String format){\r
+ ResultFormatSpi service = FormatManager.getInstance().getService(format);\r
+ if(service == null){\r
+ service = FormatManager.getDefaultFormatService();\r
+ }\r
+\r
+ BirthmarkExtractionResultFormat list = service.getExtractionResultFormat();\r
+ list.printResult(new PrintWriter(out), birthmarks.toArray(new BirthmarkSet[birthmarks.size()]));\r
+ }\r
+ }));\r
JScrollPane scroll = new JScrollPane();\r
\r
scroll.setViewportView(new BirthmarkTree(birthmarks.toArray(new BirthmarkSet[birthmarks.size()])));\r
southPanel.add(Box.createHorizontalGlue());\r
southPanel.add(saveButton);\r
southPanel.add(Box.createHorizontalGlue());\r
-\r
- saveButton.addActionListener(new ActionListener(){\r
- public void actionPerformed(ActionEvent e){\r
- saveButtonActionPerformed(e);\r
- }\r
- });\r
- }\r
-\r
- private void saveButtonActionPerformed(ActionEvent e){\r
- frame.saveAction(this);\r
- }\r
- \r
- public void writeData(PrintWriter out, ResultFormatSpi service){\r
- BirthmarkExtractionResultFormat list = service.getExtractionResultFormat();\r
-\r
- list.printResult(new PrintWriter(out), birthmarks.toArray(new BirthmarkSet[birthmarks.size()]));\r
}\r
}\r
package jp.naist.se.stigmata.ui.swing;\r
\r
/*\r
- * $Id: BirthmarkSelectionPane.java 70 2007-03-07 02:46:18Z tama3 $\r
+ * $Id$\r
*/\r
\r
import java.awt.BorderLayout;\r
/**\r
*\r
* @author Haruaki TAMADA\r
- * @version $Revision: 70 $ $Date: 2007-03-07 11:46:18 +0900 (Wed, 07 Mar 2007) $\r
+ * @version $Revision$ $Date$\r
*/\r
public class BirthmarkSelectionListPane extends BirthmarkSelectablePane implements BirthmarkServiceListener{\r
private static final long serialVersionUID = 3209854654743223453L;\r
package jp.naist.se.stigmata.ui.swing;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.io.File;\r
import java.io.FileWriter;\r
import java.io.IOException;\r
import jp.naist.se.stigmata.Birthmark;\r
import jp.naist.se.stigmata.BirthmarkSet;\r
\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public class ClassNameObfuscator{\r
private Map<String, String> nameMapping = new HashMap<String, String>();\r
\r
/**\r
* This interface has current directory.\r
*\r
- * @author tamada\r
+ * @author Haruaki Tamada\r
* @version $Revision$ $Date$\r
*/\r
public interface CurrentDirectoryHolder {\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.awt.Component;\r
+import java.io.File;\r
+import java.text.MessageFormat;\r
+\r
+import javax.swing.JFileChooser;\r
+import javax.swing.JOptionPane;\r
+import javax.swing.SwingUtilities;\r
+import javax.swing.filechooser.FileFilter;\r
+\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+public class FileIOManager{\r
+ private Component parent;\r
+ private File currentDirectory;\r
+\r
+ public FileIOManager(Component parent){\r
+ this.parent = parent;\r
+ currentDirectory = new File(".");\r
+ }\r
+\r
+ public File getCurrentDirectory(){\r
+ return currentDirectory;\r
+ }\r
+\r
+ public void setCurrentDirectory(File directory){\r
+ if(!directory.isDirectory()){\r
+ JOptionPane.showMessageDialog(\r
+ parent, \r
+ Messages.getString("notdirectory.dialog.message", directory.getName()),\r
+ Messages.getString("notdirectory.dialog.title"),\r
+ JOptionPane.ERROR_MESSAGE\r
+ );\r
+ return;\r
+ }\r
+ this.currentDirectory = directory;\r
+ }\r
+\r
+ public File findFile(boolean open, String[] exts, String desc){\r
+ JFileChooser chooser = new JFileChooser(getCurrentDirectory());\r
+ for(int i = 0; i < exts.length; i++){\r
+ chooser.addChoosableFileFilter(\r
+ new ExtensionFilter(exts[i], MessageFormat.format(desc, exts[i]))\r
+ );\r
+ }\r
+ int returnValue = -1;\r
+ if(open){\r
+ returnValue = chooser.showOpenDialog(SwingUtilities.getRootPane(parent));\r
+ }\r
+ else{\r
+ returnValue = chooser.showSaveDialog(SwingUtilities.getRootPane(parent));\r
+ }\r
+ if(returnValue == JFileChooser.APPROVE_OPTION){\r
+ setCurrentDirectory(chooser.getCurrentDirectory());\r
+ File file = chooser.getSelectedFile();\r
+ if(!open){\r
+ FileFilter filter = chooser.getFileFilter();\r
+ if(filter instanceof ExtensionFilter){\r
+ ExtensionFilter ef = (ExtensionFilter)filter;\r
+ if(!filter.accept(file)){\r
+ String[] extensions = ef.getExtensions();\r
+ file = setExtension(file, extensions[0]);\r
+ }\r
+ }\r
+ }\r
+ return file;\r
+ }\r
+ return null;\r
+ }\r
+\r
+ private File setExtension(File file, String ext){\r
+ String name = file.getName();\r
+ int index = name.lastIndexOf('.');\r
+ String n = name;\r
+ if(index > 0){\r
+ n = n.substring(0, index);\r
+ }\r
+ name = n + '.' + ext;\r
+ return new File(file.getParentFile(), name);\r
+ }\r
+}\r
import java.awt.FlowLayout;\r
import java.awt.GridLayout;\r
import java.awt.SystemColor;\r
-import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
import java.io.IOException;\r
import java.io.PrintWriter;\r
\r
import jp.naist.se.stigmata.BirthmarkSet;\r
import jp.naist.se.stigmata.ComparisonPair;\r
import jp.naist.se.stigmata.ComparisonPairElement;\r
+import jp.naist.se.stigmata.format.FormatManager;\r
import jp.naist.se.stigmata.spi.ResultFormatSpi;\r
+import jp.naist.se.stigmata.ui.swing.actions.SaveAction;\r
\r
/**\r
* \r
* @author Haruaki TAMADA\r
* @version $Revision$ $Date$\r
*/\r
-public class PairComparisonPane extends JPanel implements BirthmarkDataWritable{\r
+public class PairComparisonPane extends JPanel{\r
private static final long serialVersionUID = 2342856785474356234L;\r
\r
private StigmataFrame frame;\r
initialize();\r
}\r
\r
- public void writeData(PrintWriter out, ResultFormatSpi service) throws IOException{\r
- service.getComparisonResultFormat().printResult(out, pair);\r
- }\r
-\r
private void initialize(){\r
this.setLayout(new java.awt.BorderLayout());\r
this.add(getSouthPanel(), java.awt.BorderLayout.SOUTH);\r
panel.add(similarityPanel);\r
\r
JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));\r
- JButton saveButton = Utility.createButton("savecomparison");\r
+ JButton saveButton = Utility.createButton(\r
+ "savecomparison", new SaveAction(frame, new AsciiDataWritable(){\r
+ public void writeAsciiData(PrintWriter out, String format) throws IOException{\r
+ ResultFormatSpi service = FormatManager.getInstance().getService(format);\r
+ if(service == null){\r
+ service = FormatManager.getDefaultFormatService();\r
+ }\r
+\r
+ service.getComparisonResultFormat().printResult(out, pair);\r
+ }\r
+ })\r
+ );\r
\r
- saveButton.addActionListener(new ActionListener(){\r
- public void actionPerformed(ActionEvent e){\r
- frame.saveAction(PairComparisonPane.this);\r
- }\r
- });\r
buttonPanel.add(saveButton);\r
panel.add(buttonPanel);\r
\r
import jp.naist.se.stigmata.CertainPairComparisonResultSet;\r
import jp.naist.se.stigmata.ComparisonPair;\r
import jp.naist.se.stigmata.ComparisonResultSet;\r
-import jp.naist.se.stigmata.format.BirthmarkComparisonResultFormat;\r
+import jp.naist.se.stigmata.format.FormatManager;\r
import jp.naist.se.stigmata.spi.ResultFormatSpi;\r
+import jp.naist.se.stigmata.ui.swing.actions.SaveAction;\r
\r
/**\r
* \r
* @author Haruaki TAMADA\r
* @version $Revision$ $Date$\r
*/\r
-public class PairComparisonResultSetPane extends JPanel implements BirthmarkDataWritable{\r
+public class PairComparisonResultSetPane extends JPanel{\r
private static final long serialVersionUID = 3298346465652354302L;\r
\r
private StigmataFrame frame;\r
initData(model, list);\r
}\r
\r
- public void writeData(PrintWriter out, ResultFormatSpi service) throws IOException{\r
- BirthmarkComparisonResultFormat format = service.getComparisonResultFormat();\r
- format.printResult(out, new CertainPairComparisonResultSet(\r
- list.toArray(new ComparisonPair[list.size()]), context\r
- ));\r
- }\r
-\r
private void obfuscateClassNames(){\r
ClassNameObfuscator obfuscator = new ClassNameObfuscator();\r
List<ComparisonPair> newList = new ArrayList<ComparisonPair>();\r
JComponent buttonPanel = Box.createHorizontalBox();\r
JPanel similarityPane = new JPanel(new GridLayout(1, 3));\r
JComponent southPanel = Box.createVerticalBox();\r
- JButton saveButton = Utility.createButton("savecomparison");\r
+ JButton saveButton = Utility.createButton(\r
+ "savecomparison", new SaveAction(frame, new AsciiDataWritable(){\r
+ public void writeAsciiData(PrintWriter out, String format) throws IOException{\r
+ ResultFormatSpi service = FormatManager.getInstance().getService(format);\r
+ if(service == null){\r
+ service = FormatManager.getDefaultFormatService();\r
+ }\r
+ service.getComparisonResultFormat().printResult(\r
+ out, new CertainPairComparisonResultSet(\r
+ list.toArray(new ComparisonPair[list.size()]), context\r
+ )\r
+ );\r
+ }\r
+ })\r
+ );\r
JButton obfuscateButton = Utility.createButton("obfuscate");\r
JScrollPane scroll = new JScrollPane();\r
averageLabel = new JLabel(Double.toString(average), JLabel.RIGHT);\r
}\r
}\r
});\r
- saveButton.addActionListener(new ActionListener(){\r
- public void actionPerformed(ActionEvent e){\r
- frame.saveAction(PairComparisonResultSetPane.this);\r
- }\r
- });\r
\r
obfuscateButton.addActionListener(new ActionListener(){\r
public void actionPerformed(ActionEvent e){\r
private JButton arrowButton;\r
\r
public PopupButton(JButton initButton){\r
+ setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));\r
+\r
this.button = initButton;\r
\r
Icon icon = createIcon();\r
add(button);\r
add(arrowButton);\r
\r
- setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));\r
Dimension prefferedSize = button.getPreferredSize();\r
\r
- arrowButton.setPreferredSize(new Dimension(icon.getIconWidth() + 2, prefferedSize.height));\r
- setPreferredSize(new Dimension(prefferedSize.width + icon.getIconWidth() + 2, prefferedSize.height));\r
+ arrowButton.setPreferredSize(new Dimension(icon.getIconWidth() + 4, prefferedSize.height));\r
+ setPreferredSize(new Dimension(prefferedSize.width + icon.getIconWidth() + 4, prefferedSize.height));\r
\r
Dimension maxSize = button.getMaximumSize();\r
- arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 2, maxSize.height));\r
- setMaximumSize(new Dimension(maxSize.width + icon.getIconWidth() + 2, maxSize.height));\r
+ arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, maxSize.height));\r
+ setMaximumSize(new Dimension(maxSize.width + icon.getIconWidth() + 4, maxSize.height));\r
\r
Dimension minSize = button.getMinimumSize();\r
- arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 2, minSize.height));\r
- setMinimumSize(new Dimension(minSize.width + icon.getIconWidth() + 2, minSize.height));\r
+ arrowButton.setMaximumSize(new Dimension(icon.getIconWidth() + 4, minSize.height));\r
+ setMinimumSize(new Dimension(minSize.width + icon.getIconWidth() + 4, minSize.height));\r
\r
arrowButton.setSize(arrowButton.getPreferredSize());\r
setSize(getPreferredSize());\r
import jp.naist.se.stigmata.ComparisonResultSet;\r
import jp.naist.se.stigmata.RoundRobinComparisonResultSet;\r
import jp.naist.se.stigmata.filter.FilteredComparisonResultSet;\r
+import jp.naist.se.stigmata.format.FormatManager;\r
import jp.naist.se.stigmata.spi.ResultFormatSpi;\r
+import jp.naist.se.stigmata.ui.swing.actions.SaveAction;\r
\r
/**\r
* \r
* @author Haruaki TAMADA\r
* @version $Revision$ $Date$\r
*/\r
-public class RoundRobinComparisonResultPane extends JPanel implements BirthmarkDataWritable{\r
+public class RoundRobinComparisonResultPane extends JPanel{\r
private static final long serialVersionUID = 2134574576543623L;\r
\r
private List<BirthmarkSet> birthmarksX;\r
compare(model);\r
}\r
\r
- public void writeData(PrintWriter out, ResultFormatSpi service){\r
- service.getComparisonResultFormat().printResult(out,\r
- new RoundRobinComparisonResultSet(\r
- birthmarksX.toArray(new BirthmarkSet[birthmarksX.size()]), \r
- birthmarksY.toArray(new BirthmarkSet[birthmarksY.size()]), context\r
- )\r
- );\r
- }\r
-\r
private void compare(DefaultTableModel model){\r
int comparison = birthmarksX.size() * birthmarksY.size();\r
\r
box2.add(maximum = new JLabel());\r
south.add(box2);\r
\r
- classCount.setBorder(new TitledBorder(Messages.getString("numberofclasses.border"))); //$NON-NLS-1$\r
- comparisonCount.setBorder(new TitledBorder(Messages.getString("comparisoncount.border"))); //$NON-NLS-1$\r
- distinctionRatio.setBorder(new TitledBorder(Messages.getString("distinctionratio.border"))); //$NON-NLS-1$\r
- average.setBorder(new TitledBorder(Messages.getString("average.border"))); //$NON-NLS-1$\r
- minimum.setBorder(new TitledBorder(Messages.getString("minimum.border"))); //$NON-NLS-1$\r
- maximum.setBorder(new TitledBorder(Messages.getString("maximum.border"))); //$NON-NLS-1$\r
+ classCount.setBorder(new TitledBorder(Messages.getString("numberofclasses.border")));\r
+ comparisonCount.setBorder(new TitledBorder(Messages.getString("comparisoncount.border")));\r
+ distinctionRatio.setBorder(new TitledBorder(Messages.getString("distinctionratio.border")));\r
+ average.setBorder(new TitledBorder(Messages.getString("average.border")));\r
+ minimum.setBorder(new TitledBorder(Messages.getString("minimum.border")));\r
+ maximum.setBorder(new TitledBorder(Messages.getString("maximum.border")));\r
\r
panel.add(south, BorderLayout.SOUTH);\r
\r
return panel;\r
}\r
\r
- private void saveButtonActionPerformed(ActionEvent e){\r
- stigmataFrame.saveAction(this);\r
- }\r
-\r
private void mdsButtonActionPerformed(ActionEvent e){\r
Map<URL, BirthmarkSet> map = new HashMap<URL, BirthmarkSet>();\r
for(BirthmarkSet bs: birthmarksX){\r
}\r
\r
private void initialize(){\r
- JButton save = Utility.createButton("savecomparison"); //$NON-NLS-1$\r
- JButton graph = Utility.createButton("showgraph"); //$NON-NLS-1$\r
- JButton obfuscate = Utility.createButton("obfuscate"); //$NON-NLS-1$\r
- JButton compare = Utility.createButton("guessedpair"); //$NON-NLS-1$\r
+ JButton save = Utility.createButton(\r
+ "savecomparison", new SaveAction(stigmataFrame, new AsciiDataWritable(){\r
+ public void writeAsciiData(PrintWriter out, String format){\r
+ ResultFormatSpi service = FormatManager.getInstance().getService(format);\r
+ if(service == null){\r
+ service = FormatManager.getDefaultFormatService();\r
+ }\r
+\r
+ service.getComparisonResultFormat().printResult(out,\r
+ new RoundRobinComparisonResultSet(\r
+ birthmarksX.toArray(new BirthmarkSet[birthmarksX.size()]), \r
+ birthmarksY.toArray(new BirthmarkSet[birthmarksY.size()]), context\r
+ )\r
+ );\r
+ }\r
+ }\r
+ ));\r
+ JButton graph = Utility.createButton("showgraph");\r
+ JButton obfuscate = Utility.createButton("obfuscate");\r
+ JButton compare = Utility.createButton("guessedpair");\r
JMenuItem mdsMenu = Utility.createJMenuItem("mdsmap");\r
\r
PopupButton comparePopup = new PopupButton(compare);\r
southPanel.add(comparePopup);\r
southPanel.add(Box.createHorizontalGlue());\r
\r
- save.addActionListener(new ActionListener(){\r
- public void actionPerformed(ActionEvent e){\r
- saveButtonActionPerformed(e);\r
- }\r
- });\r
-\r
graph.addActionListener(new ActionListener(){\r
public void actionPerformed(ActionEvent e){\r
graphButtonActionPerformed(e);\r
import java.io.BufferedReader;\r
import java.io.File;\r
import java.io.FileReader;\r
-import java.io.FileWriter;\r
import java.io.IOException;\r
import java.io.PrintWriter;\r
import java.io.StringWriter;\r
-import java.text.MessageFormat;\r
import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.List;\r
import java.util.Map;\r
\r
import javax.swing.JCheckBoxMenuItem;\r
-import javax.swing.JFileChooser;\r
import javax.swing.JFrame;\r
import javax.swing.JLabel;\r
import javax.swing.JMenu;\r
import javax.swing.WindowConstants;\r
import javax.swing.event.ChangeEvent;\r
import javax.swing.event.ChangeListener;\r
-import javax.swing.filechooser.FileFilter;\r
\r
import jp.naist.se.stigmata.BirthmarkContext;\r
import jp.naist.se.stigmata.BirthmarkElementClassNotFoundException;\r
import jp.naist.se.stigmata.ComparisonResultSet;\r
import jp.naist.se.stigmata.Stigmata;\r
import jp.naist.se.stigmata.filter.FilteredComparisonResultSet;\r
-import jp.naist.se.stigmata.format.FormatManager;\r
-import jp.naist.se.stigmata.spi.ResultFormatSpi;\r
import jp.naist.se.stigmata.ui.swing.actions.AboutAction;\r
import jp.naist.se.stigmata.ui.swing.actions.LicenseAction;\r
import jp.naist.se.stigmata.ui.swing.graph.SimilarityDistributionGraphPane;\r
import jp.naist.se.stigmata.ui.swing.mds.MDSGraphPanel;\r
+import jp.naist.se.stigmata.ui.swing.tab.EditableTabbedPane;\r
\r
\r
/**\r
private Stigmata stigmata;\r
private BirthmarkContext context;\r
private ControlPane control;\r
- private File currentDirectory;\r
+ private FileIOManager fileio;\r
private int extractCount = 0;\r
private int compareCount = 0;\r
private int compareDetail = 0;\r
public StigmataFrame(){\r
stigmata = Stigmata.getInstance();\r
context = stigmata.createContext();\r
+ fileio = new FileIOManager(this);\r
\r
initLayouts();\r
}\r
public StigmataFrame(Stigmata stigmata, BirthmarkContext context){\r
this.stigmata = stigmata;\r
this.context = context;\r
+ this.fileio = new FileIOManager(this);\r
\r
initLayouts();\r
}\r
\r
- public File getCurrentDirectory(){\r
- return currentDirectory;\r
- }\r
-\r
- public void setCurrentDirectory(File directory){\r
- if(!directory.isDirectory()){\r
- JOptionPane.showMessageDialog(\r
- this, \r
- Messages.getString("notdirectory.dialog.message", directory.getName()),\r
- Messages.getString("notdirectory.dialog.title"),\r
- JOptionPane.ERROR_MESSAGE\r
- );\r
- return;\r
- }\r
- this.currentDirectory = directory;\r
- }\r
-\r
public Stigmata getStigmata(){\r
return stigmata;\r
}\r
return context;\r
}\r
\r
+ public File getCurrentDirectory(){\r
+ return fileio.getCurrentDirectory();\r
+ }\r
+\r
+ public void setCurrentDirectory(File file){\r
+ fileio.setCurrentDirectory(file);\r
+ }\r
+\r
/**\r
* Find file to open it.\r
*/\r
public File getOpenFile(String[] exts, String desc){\r
- return findFile(true, exts, desc);\r
+ return fileio.findFile(true, exts, desc);\r
}\r
\r
/**\r
* Extension of found file is correct as selected extension.\r
*/\r
public File getSaveFile(String[] exts, String desc){\r
- return findFile(false, exts, desc);\r
+ return fileio.findFile(false, exts, desc);\r
}\r
\r
public void addBirthmarkServiceListener(BirthmarkServiceListener listener){\r
control.removeBirthmarkServiceListener(listener);\r
}\r
\r
- public void saveAction(BirthmarkDataWritable writable){\r
- File file = getSaveFile(Messages.getStringArray("store.extensions"),\r
- Messages.getString("store.description"));\r
- if(file != null){\r
- String name = file.getName();\r
- String ext = name.substring(name.lastIndexOf('.') + 1, name.length());\r
-\r
- ResultFormatSpi result = FormatManager.getInstance().getService(ext);\r
- if(result == null){\r
- result = FormatManager.getDefaultFormatService();\r
- }\r
-\r
- PrintWriter out = null;\r
- try{\r
- out = new PrintWriter(new FileWriter(file));\r
- writable.writeData(out, result);\r
- }catch(IOException e){\r
- }finally{\r
- if(out != null){\r
- out.close();\r
- }\r
- }\r
- }\r
- }\r
-\r
public void compareDetails(BirthmarkSet target1, BirthmarkSet target2, BirthmarkContext context){\r
PairComparisonPane detail = new PairComparisonPane(\r
this, new ComparisonPair(target1, target2, context)\r
return mapping;\r
}\r
\r
- private File findFile(boolean open, String[] exts, String desc){\r
- JFileChooser chooser = new JFileChooser(getCurrentDirectory());\r
- for(int i = 0; i < exts.length; i++){\r
- chooser.addChoosableFileFilter(\r
- new ExtensionFilter(exts[i], MessageFormat.format(desc, exts[i]))\r
- );\r
- }\r
- int returnValue = -1;\r
- if(open){\r
- returnValue = chooser.showOpenDialog(SwingUtilities.getRootPane(this));\r
- }\r
- else{\r
- returnValue = chooser.showSaveDialog(SwingUtilities.getRootPane(this));\r
- }\r
- if(returnValue == JFileChooser.APPROVE_OPTION){\r
- setCurrentDirectory(chooser.getCurrentDirectory());\r
- File file = chooser.getSelectedFile();\r
- if(!open){\r
- FileFilter filter = chooser.getFileFilter();\r
- if(filter instanceof ExtensionFilter){\r
- ExtensionFilter ef = (ExtensionFilter)filter;\r
- if(!filter.accept(file)){\r
- String[] extensions = ef.getExtensions();\r
- file = setExtension(file, extensions[0]);\r
- }\r
- }\r
- }\r
- return file;\r
- }\r
- return null;\r
- }\r
-\r
- private File setExtension(File file, String ext){\r
- String name = file.getName();\r
- int index = name.lastIndexOf('.');\r
- String n = name;\r
- if(index > 0){\r
- n = n.substring(0, index);\r
- }\r
- name = n + '.' + ext;\r
- return new File(file.getParentFile(), name);\r
- }\r
-\r
private void initLayouts(){\r
setTitle(Messages.getString("stigmata.frame.title"));\r
initComponents();\r
control.inititalize();\r
tabPane.setSelectedIndex(tabPane.getTabCount() - 1);\r
\r
- currentDirectory = new File(".");\r
-\r
setSize(900, 600);\r
frameList.add(this);\r
}\r
\r
private void initComponents(){\r
- tabPane = new JTabbedPane();\r
+ JMenuBar menubar = new JMenuBar();\r
+ menubar.add(createFileMenu());\r
+ menubar.add(createHelpMenu());\r
+\r
+ setJMenuBar(menubar);\r
\r
+ tabPane = new EditableTabbedPane(this);\r
add(tabPane, BorderLayout.CENTER);\r
\r
tabPane.addChangeListener(new ChangeListener(){\r
}\r
});\r
\r
- JMenuBar menubar = new JMenuBar();\r
- menubar.add(createFileMenu());\r
- menubar.add(createHelpMenu());\r
-\r
- setJMenuBar(menubar);\r
-\r
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);\r
}\r
\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+public class UnsupportedFormatException extends Exception{\r
+ private static final long serialVersionUID = 8165384564671102575L;\r
+\r
+ public UnsupportedFormatException(){\r
+ }\r
+\r
+ public UnsupportedFormatException(String message){\r
+ super(message);\r
+ }\r
+\r
+ public UnsupportedFormatException(Throwable cause){\r
+ super(cause);\r
+ }\r
+\r
+ public UnsupportedFormatException(String message, Throwable cause){\r
+ super(message, cause);\r
+ }\r
+}\r
*/\r
\r
import java.awt.Component;\r
-import java.awt.event.ActionEvent;\r
-import java.awt.event.ActionListener;\r
import java.lang.reflect.InvocationTargetException;\r
import java.text.MessageFormat;\r
\r
-import javax.swing.AbstractAction;\r
import javax.swing.Action;\r
import javax.swing.Icon;\r
import javax.swing.ImageIcon;\r
private Utility(){\r
}\r
\r
- public static Action createAction2(String key, final ActionListener listener){\r
- final Icon icon = getIcon(key + ".icon");\r
- final String label = Messages.getString(key + ".label");\r
-\r
- return new AbstractAction(label, icon){\r
- private static final long serialVersionUID = 1349393156253158607L;\r
-\r
- public void actionPerformed(ActionEvent e){\r
- listener.actionPerformed(e);\r
- }\r
- };\r
- }\r
-\r
public static void decorateJComponent(JComponent component, String label){\r
if(Messages.hasString(label + ".tooltip")){\r
component.setToolTipText(Messages.getString(label + ".tooltip"));\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing.actions;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.awt.BorderLayout;\r
+import java.awt.Component;\r
+\r
+import javax.swing.JLabel;\r
+import javax.swing.JPanel;\r
+\r
+import jp.naist.se.stigmata.ui.swing.Messages;\r
+import jp.naist.se.stigmata.ui.swing.Utility;\r
+\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+public class AboutAction extends ShowTextAction{\r
+ private static final long serialVersionUID = -7060581883871662749L;\r
+\r
+ public AboutAction(Component parent){\r
+ super(parent);\r
+ }\r
+\r
+ @Override\r
+ public String getTitle(){\r
+ return Messages.getString("about.dialog.title");\r
+ }\r
+\r
+ @Override\r
+ public String getMessage(){\r
+ String aboutMessage = loadStringFromFile(getClass().getResource("/resources/about.txt"));\r
+ \r
+ Package p = getClass().getPackage();\r
+ aboutMessage = aboutMessage.replace("${implementation.version}", p.getImplementationVersion());\r
+ aboutMessage = aboutMessage.replace("${implementation.vendor}", p.getImplementationVendor());\r
+ aboutMessage = aboutMessage.replace("${implementation.title}", p.getImplementationTitle());\r
+\r
+ return aboutMessage;\r
+ }\r
+\r
+ @Override\r
+ public void updatePanel(JPanel panel){\r
+ JLabel logo = new JLabel(Utility.getIcon("stigmata.logo"));\r
+ panel.add(logo, BorderLayout.NORTH);\r
+ }\r
+}\r
-package jp.naist.se.stigmata.ui.swing;\r
+package jp.naist.se.stigmata.ui.swing.actions;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
\r
import java.awt.Color;\r
import java.awt.Component;\r
import javax.swing.JColorChooser;\r
import javax.swing.JDialog;\r
\r
+import jp.naist.se.stigmata.ui.swing.Messages;\r
+import jp.naist.se.stigmata.ui.swing.Utility;\r
+\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public class ChangeColorAction extends AbstractAction{\r
private static final long serialVersionUID = -7617597154707466764L;\r
\r
- private Color color = Color.RED;\r
+ private Color currentColor = Color.RED;\r
private JColorChooser chooser;\r
private Component component;\r
private boolean colorSelected = false;\r
private ActionListener listener;\r
\r
- public ChangeColorAction(String label, Component component, Color color, ActionListener listener){\r
- super(Messages.getString(label + ".label"),\r
- Utility.getIcon(label + ".icon"));\r
+ public ChangeColorAction(String label, Component component, \r
+ Color initialColor, ActionListener listener){\r
+ super(Messages.getString(label + ".label"), Utility.getIcon(label + ".icon"));\r
this.component = component;\r
this.listener = listener;\r
- this.color = color;\r
+ this.currentColor = initialColor;\r
\r
chooser = new JColorChooser();\r
- chooser.setColor(color);\r
-\r
+ chooser.setColor(initialColor);\r
}\r
\r
public ChangeColorAction(Component component, Color color, ActionListener listener){\r
}\r
\r
public Color getColor(){\r
- return color;\r
+ return currentColor;\r
}\r
\r
public void actionPerformed(ActionEvent e){\r
- chooser.setColor(color);\r
+ chooser.setColor(currentColor);\r
JDialog dialog = JColorChooser.createDialog(\r
component, Messages.getString("changecolor.title"), \r
true, chooser,\r
new ActionListener(){ // ok\r
public void actionPerformed(ActionEvent e){\r
- color = chooser.getColor();\r
+ currentColor = chooser.getColor();\r
colorSelected = true;\r
listener.actionPerformed(new ActionEvent(ChangeColorAction.this, e.getID(), e.getActionCommand(), e.getWhen(), e.getModifiers()));\r
}\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing.actions;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.awt.Component;\r
+\r
+import jp.naist.se.stigmata.ui.swing.Messages;\r
+\r
+/**\r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+public class LicenseAction extends ShowTextAction{\r
+ private static final long serialVersionUID = 7727665273988881423L;\r
+\r
+ public LicenseAction(Component parent){\r
+ super(parent);\r
+ }\r
+\r
+ public String getTitle(){\r
+ return Messages.getString("license.dialog.title");\r
+ }\r
+\r
+ public String getMessage(){\r
+ return loadStringFromFile(getClass().getResource("/META-INF/license.txt"));\r
+ }\r
+}\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing.actions;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.awt.event.ActionEvent;\r
+import java.io.BufferedOutputStream;\r
+import java.io.File;\r
+import java.io.FileOutputStream;\r
+import java.io.FileWriter;\r
+import java.io.IOException;\r
+import java.io.OutputStream;\r
+import java.io.PrintWriter;\r
+\r
+import javax.swing.AbstractAction;\r
+import javax.swing.JOptionPane;\r
+\r
+import jp.naist.se.stigmata.ui.swing.AsciiDataWritable;\r
+import jp.naist.se.stigmata.ui.swing.BinaryDataWritable;\r
+import jp.naist.se.stigmata.ui.swing.Messages;\r
+import jp.naist.se.stigmata.ui.swing.StigmataFrame;\r
+import jp.naist.se.stigmata.ui.swing.UnsupportedFormatException;\r
+\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+public class SaveAction extends AbstractAction{\r
+ private static final long serialVersionUID = 1427912047636729211L;\r
+\r
+ private AsciiDataWritable asciiWritable;\r
+ private BinaryDataWritable binaryWritable;\r
+ private StigmataFrame stigmata;\r
+ private String[] extensions;\r
+ private String description;\r
+\r
+ public SaveAction(StigmataFrame stigmata, AsciiDataWritable writable){\r
+ this.stigmata = stigmata;\r
+ this.asciiWritable = writable;\r
+ }\r
+\r
+ public SaveAction(StigmataFrame stigmata, BinaryDataWritable writable){\r
+ this.stigmata = stigmata;\r
+ this.binaryWritable = writable;\r
+ }\r
+\r
+ public void setExtensions(String[] extensions){\r
+ this.extensions = extensions;\r
+ }\r
+\r
+ public void setDescrpition(String description){\r
+ this.description = description;\r
+ }\r
+\r
+ public void actionPerformed(ActionEvent e){\r
+ if(extensions == null || description == null){\r
+ extensions = Messages.getStringArray("store.extensions");\r
+ description = Messages.getString("store.description");\r
+ }\r
+ File file = stigmata.getSaveFile(extensions, description);\r
+ if(file != null){\r
+ String name = file.getName();\r
+ String format = name.substring(name.lastIndexOf('.') + 1, name.length());\r
+\r
+ OutputStream out = null;\r
+ PrintWriter writer = null;\r
+ try{\r
+ if(asciiWritable != null){\r
+ writer = new PrintWriter(new FileWriter(file));\r
+ asciiWritable.writeAsciiData(writer, format);\r
+ }\r
+ else{\r
+ out = new BufferedOutputStream(new FileOutputStream(file));\r
+ binaryWritable.writeBinaryData(out, format);\r
+ }\r
+ }catch(IOException ee){\r
+ JOptionPane.showMessageDialog(\r
+ stigmata, ee.getMessage(), Messages.getString("error.dialog.title"),\r
+ JOptionPane.ERROR_MESSAGE\r
+ );\r
+ }catch(UnsupportedFormatException ee){\r
+ JOptionPane.showMessageDialog(\r
+ stigmata, ee.getMessage(), Messages.getString("error.dialog.title"),\r
+ JOptionPane.ERROR_MESSAGE\r
+ );\r
+ }finally{\r
+ if(out != null){\r
+ try{\r
+ out.close();\r
+ } catch(IOException ee){\r
+ }\r
+ }\r
+ if(writer != null){\r
+ writer.close();\r
+ }\r
+ }\r
+ }\r
+ }\r
+}\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing.actions;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.awt.BorderLayout;\r
+import java.awt.Component;\r
+import java.awt.Dimension;\r
+import java.awt.event.ActionEvent;\r
+import java.io.BufferedReader;\r
+import java.io.IOException;\r
+import java.io.InputStreamReader;\r
+import java.io.PrintWriter;\r
+import java.io.StringWriter;\r
+import java.net.URL;\r
+\r
+import javax.swing.AbstractAction;\r
+import javax.swing.JOptionPane;\r
+import javax.swing.JPanel;\r
+import javax.swing.JScrollPane;\r
+import javax.swing.JTextArea;\r
+\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+abstract class ShowTextAction extends AbstractAction{\r
+ private Component parent;\r
+\r
+ public ShowTextAction(Component parent){\r
+ this.parent = parent;\r
+ }\r
+\r
+ public abstract String getMessage();\r
+\r
+ public void updatePanel(JPanel panel){\r
+ }\r
+\r
+ public abstract String getTitle();\r
+\r
+ public void actionPerformed(ActionEvent e){\r
+ String message = getMessage();\r
+\r
+ JTextArea text = new JTextArea(message);\r
+ text.setEditable(false);\r
+ text.setCaretPosition(0);\r
+ JScrollPane scroll = new JScrollPane();\r
+ scroll.setViewportView(text);\r
+\r
+ JPanel panel = new JPanel(new BorderLayout());\r
+ panel.add(scroll, BorderLayout.CENTER);\r
+ panel.setPreferredSize(new Dimension(500, 300));\r
+\r
+ updatePanel(panel);\r
+\r
+ JOptionPane.showMessageDialog(\r
+ parent, panel, getTitle(),\r
+ JOptionPane.INFORMATION_MESSAGE\r
+ );\r
+ }\r
+\r
+ protected String loadStringFromFile(URL url){\r
+ try{\r
+ String line;\r
+ BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));\r
+ StringWriter writer = new StringWriter();\r
+ PrintWriter out = new PrintWriter(writer);\r
+ while((line = in.readLine()) != null){\r
+ out.println(line);\r
+ }\r
+ out.close();\r
+ in.close();\r
+\r
+ return writer.toString();\r
+ }catch(IOException e){\r
+ e.printStackTrace();\r
+ }\r
+ return null;\r
+ }\r
+}\r
import javax.swing.JOptionPane;\r
import javax.swing.JPanel;\r
\r
-import jp.naist.se.stigmata.ui.swing.ChangeColorAction;\r
import jp.naist.se.stigmata.ui.swing.Messages;\r
import jp.naist.se.stigmata.ui.swing.StigmataFrame;\r
import jp.naist.se.stigmata.ui.swing.Utility;\r
+import jp.naist.se.stigmata.ui.swing.actions.ChangeColorAction;\r
\r
/**\r
* \r
package jp.naist.se.stigmata.ui.swing.mds;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+/**\r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public class Coordinate{\r
private double x, y, z;\r
private String label;\r
package jp.naist.se.stigmata.ui.swing.mds;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+/**\r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public enum GeometoryType{\r
RECTANGLE,\r
UPPER_TRIANGLE,\r
package jp.naist.se.stigmata.ui.swing.mds;\r
+/*\r
+ * $Id$\r
+ */\r
\r
import java.util.ArrayList;\r
import java.util.HashMap;\r
import java.util.List;\r
import java.util.Map;\r
\r
+/**\r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public class LabelMap{\r
private List<String> labels = new ArrayList<String>();\r
private Map<String, String> groups = new HashMap<String, String>();\r
package jp.naist.se.stigmata.ui.swing.mds;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.BorderLayout;\r
import java.awt.Color;\r
-import java.awt.Dimension;\r
-import java.awt.Graphics2D;\r
import java.awt.event.ActionEvent;\r
import java.awt.event.ActionListener;\r
-import java.awt.image.BufferedImage;\r
-import java.io.File;\r
-import java.io.FileWriter;\r
-import java.io.IOException;\r
-import java.io.PrintWriter;\r
import java.net.URL;\r
-import java.util.Iterator;\r
\r
-import javax.imageio.ImageIO;\r
-import javax.swing.AbstractAction;\r
import javax.swing.Action;\r
import javax.swing.Box;\r
import javax.swing.JCheckBox;\r
-import javax.swing.JOptionPane;\r
import javax.swing.JPanel;\r
\r
import jp.naist.se.stigmata.BirthmarkContext;\r
import jp.naist.se.stigmata.BirthmarkSet;\r
import jp.naist.se.stigmata.ComparisonPair;\r
-import jp.naist.se.stigmata.ui.swing.ChangeColorAction;\r
import jp.naist.se.stigmata.ui.swing.Messages;\r
import jp.naist.se.stigmata.ui.swing.PopupButton;\r
import jp.naist.se.stigmata.ui.swing.StigmataFrame;\r
import jp.naist.se.stigmata.ui.swing.Utility;\r
+import jp.naist.se.stigmata.ui.swing.actions.ChangeColorAction;\r
+import jp.naist.se.stigmata.ui.swing.actions.SaveAction;\r
import Jama.Matrix;\r
\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public class MDSGraphPanel extends JPanel{\r
private static final long serialVersionUID = -7256554014379112897L;\r
private StigmataFrame stigmata;\r
initLayouts(matrix);\r
}\r
\r
- private void saveMDSImage(){\r
- File file = stigmata.getSaveFile(\r
- Messages.getStringArray("savemds.extensions"),\r
- Messages.getString("savemds.description")\r
- );\r
- Dimension size = viewer.getSize();\r
- BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_ARGB);\r
- Graphics2D g = image.createGraphics();\r
- g.setColor(Color.WHITE);\r
- g.fillRect(0, 0, size.width, size.height);\r
- viewer.update(g);\r
- try{\r
- String name = file.getName();\r
- ImageIO.write(image, name.substring(name.lastIndexOf('.') + 1), file);\r
- } catch(IOException e){\r
- JOptionPane.showMessageDialog(\r
- stigmata, e.getMessage(), "File store error", JOptionPane.WARNING_MESSAGE\r
- );\r
- }\r
- }\r
-\r
- private void saveCoordinate(){\r
- File file = stigmata.getSaveFile(\r
- Messages.getStringArray("savelocation.extensions"),\r
- Messages.getString("savelocation.description")\r
- );\r
- PrintWriter out = null;\r
- try{\r
- out = new PrintWriter(new FileWriter(file));\r
- for(Iterator<Coordinate> i = viewer.coordinates(); i.hasNext(); ){\r
- Coordinate c = i.next();\r
- out.printf("%s,%s,%g,%g%n", c.getLabel(), c.getGroupId(), c.getX(), c.getY());\r
- }\r
- } catch(IOException e){\r
- JOptionPane.showMessageDialog(\r
- stigmata, e.getMessage(), "File store error", JOptionPane.WARNING_MESSAGE\r
- );\r
- } finally{\r
- if(out != null){\r
- out.close();\r
- }\r
- }\r
- }\r
-\r
private double[][] initData(BirthmarkSet[] set, BirthmarkContext context){\r
labels = new LabelMap();\r
double[][] matrix = new double[set.length][set.length];\r
private void initLayouts(double[][] matrix){\r
viewer = new MDSGraphViewer(new MDSMethod(new Matrix(matrix)), labels);\r
viewer.setShowLabel(true);\r
- \r
+\r
Box south = Box.createHorizontalBox();\r
\r
viewer.addActionListener(new ActionListener(){\r
}\r
}\r
);\r
- Action saveMDSAction = new AbstractAction(){\r
- private static final long serialVersionUID = 3314135350231965216L;\r
+ SaveAction saveMDSAction = new SaveAction(stigmata, new MDSImageExporter(viewer));\r
+ saveMDSAction.setExtensions(Messages.getStringArray("savemds.extensions"));\r
+ saveMDSAction.setDescrpition(Messages.getString("savemds.description"));\r
\r
- public void actionPerformed(ActionEvent e){\r
- saveMDSImage();\r
- }\r
- };\r
- Action saveCoordinate = new AbstractAction(){\r
- private static final long serialVersionUID = 1956405328339468706L;\r
+ SaveAction saveCoordinate = new SaveAction(stigmata, new MDSPointsLocationExporter(viewer));\r
+ saveCoordinate.setExtensions(Messages.getStringArray("savelocation.extensions"));\r
+ saveCoordinate.setDescrpition(Messages.getString("savelocation.description"));\r
\r
- public void actionPerformed(ActionEvent e){\r
- saveCoordinate();\r
- }\r
- };\r
PopupButton colorButton = new PopupButton(Utility.createButton("updatecolor", pointColorAction));\r
colorButton.addMenuItem(Utility.createJMenuItem("updateovercolor", overColorAction));\r
PopupButton saveButton = new PopupButton(Utility.createButton("savemds", saveMDSAction));\r
package jp.naist.se.stigmata.ui.swing.mds;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.BorderLayout;\r
import java.awt.Color;\r
import java.awt.Component;\r
import jp.naist.se.stigmata.ui.swing.mds.mark.DrawerFactory;\r
import Jama.Matrix;\r
\r
+/**\r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public class MDSGraphViewer extends JLayeredPane{\r
private static final long serialVersionUID = -9196070059428975126L;\r
private static final int POINT_LAYER = DEFAULT_LAYER;\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing.mds;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.awt.Color;\r
+import java.awt.Dimension;\r
+import java.awt.Graphics2D;\r
+import java.awt.image.BufferedImage;\r
+import java.io.IOException;\r
+import java.io.OutputStream;\r
+\r
+import javax.imageio.ImageIO;\r
+import javax.swing.JOptionPane;\r
+import javax.swing.SwingUtilities;\r
+\r
+import jp.naist.se.stigmata.ui.swing.BinaryDataWritable;\r
+import jp.naist.se.stigmata.ui.swing.Messages;\r
+import jp.naist.se.stigmata.ui.swing.UnsupportedFormatException;\r
+\r
+/**\r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+public class MDSImageExporter implements BinaryDataWritable{\r
+ private MDSGraphViewer viewer;\r
+\r
+ public MDSImageExporter(MDSGraphViewer viewer){\r
+ this.viewer = viewer;\r
+ }\r
+\r
+ public void writeBinaryData(OutputStream out, String format)\r
+ throws IOException, UnsupportedFormatException{\r
+ Dimension size = viewer.getSize();\r
+ BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_ARGB);\r
+ Graphics2D g = image.createGraphics();\r
+ g.setColor(Color.WHITE);\r
+ g.fillRect(0, 0, size.width, size.height);\r
+ viewer.update(g);\r
+\r
+ try{\r
+ ImageIO.write(image, format, out);\r
+ out.flush();\r
+ } catch(IOException e){\r
+ JOptionPane.showMessageDialog(\r
+ SwingUtilities.getRoot(viewer), e.getMessage(),\r
+ Messages.getString("error.dialog.title"),\r
+ JOptionPane.WARNING_MESSAGE\r
+ );\r
+ }\r
+ }\r
+\r
+}\r
package jp.naist.se.stigmata.ui.swing.mds;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import Jama.EigenvalueDecomposition;\r
import Jama.Matrix;\r
\r
+/**\r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public class MDSMethod{\r
private Matrix target;\r
private Matrix coordinate;\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing.mds;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.io.IOException;\r
+import java.io.PrintWriter;\r
+import java.util.Iterator;\r
+\r
+import jp.naist.se.stigmata.ui.swing.AsciiDataWritable;\r
+import jp.naist.se.stigmata.ui.swing.Messages;\r
+import jp.naist.se.stigmata.ui.swing.UnsupportedFormatException;\r
+\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+public class MDSPointsLocationExporter implements AsciiDataWritable{\r
+ private MDSGraphViewer viewer;\r
+\r
+ public MDSPointsLocationExporter(MDSGraphViewer viewer){\r
+ this.viewer = viewer;\r
+ }\r
+\r
+ public void writeAsciiData(PrintWriter out, String format)\r
+ throws IOException, UnsupportedFormatException{\r
+ if(!format.equals("csv")){\r
+ throw new UnsupportedFormatException(Messages.getString("error.unsupportedformat", format));\r
+ }\r
+ for(Iterator<Coordinate> i = viewer.coordinates(); i.hasNext(); ){\r
+ Coordinate c = i.next();\r
+ out.printf("%s,%s,%g,%g%n", c.getLabel(), c.getGroupId(), c.getX(), c.getY());\r
+ }\r
+ }\r
+\r
+}\r
package jp.naist.se.stigmata.ui.swing.mds;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.Graphics2D;\r
\r
+/**\r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public interface MarkDrawer{\r
public void draw(Graphics2D g, int w, int h);\r
\r
package jp.naist.se.stigmata.ui.swing.mds;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.Color;\r
import java.awt.Dimension;\r
import java.awt.Graphics;\r
\r
import jp.naist.se.stigmata.ui.swing.mds.mark.DrawerFactory;\r
\r
+/**\r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
class PointComponent extends JLabel{\r
private static final long serialVersionUID = 6945871049990818511L;\r
public static final Color DEFAULT_OVER_COLOR = Color.BLUE;\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
\r
import java.awt.Graphics2D;\r
import java.awt.Shape;\r
\r
import jp.naist.se.stigmata.ui.swing.mds.MarkDrawer;\r
\r
-public abstract class AbstractMarkDrawer implements MarkDrawer{\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+abstract class AbstractMarkDrawer implements MarkDrawer{\r
private boolean fill;\r
\r
public AbstractMarkDrawer(){\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.Shape;\r
import java.awt.geom.Ellipse2D;\r
\r
-public class CircleDrawer extends AbstractMarkDrawer{\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+class CircleDrawer extends AbstractMarkDrawer{\r
\r
public CircleDrawer(){\r
super();\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.Shape;\r
import java.awt.geom.GeneralPath;\r
\r
-public class CrossDrawer extends LineMarkDrawer{\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+class CrossDrawer extends LineMarkDrawer{\r
public CrossDrawer(){\r
}\r
\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.Shape;\r
import java.awt.geom.GeneralPath;\r
\r
-public class DownerTriangleDrawer extends AbstractMarkDrawer{\r
-\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+class DownerTriangleDrawer extends AbstractMarkDrawer{\r
public DownerTriangleDrawer(){\r
super();\r
}\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.util.HashMap;\r
import java.util.Map;\r
\r
import jp.naist.se.stigmata.ui.swing.mds.GeometoryType;\r
import jp.naist.se.stigmata.ui.swing.mds.MarkDrawer;\r
\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
public class DrawerFactory{\r
private static final DrawerFactory instance = new DrawerFactory();\r
\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.BasicStroke;\r
import java.awt.Stroke;\r
\r
-public abstract class LineMarkDrawer extends AbstractMarkDrawer{\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+abstract class LineMarkDrawer extends AbstractMarkDrawer{\r
public LineMarkDrawer(){\r
}\r
\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.Shape;\r
import java.awt.geom.Rectangle2D;\r
\r
-public class RectangleDrawer extends AbstractMarkDrawer{\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+class RectangleDrawer extends AbstractMarkDrawer{\r
\r
public RectangleDrawer(){\r
super();\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.Shape;\r
import java.awt.geom.GeneralPath;\r
\r
-public class RhombusDrawer extends AbstractMarkDrawer{\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+class RhombusDrawer extends AbstractMarkDrawer{\r
\r
public RhombusDrawer(){\r
super();\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.Shape;\r
import java.awt.geom.GeneralPath;\r
\r
-public class StarDrawer extends LineMarkDrawer{\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+class StarDrawer extends LineMarkDrawer{\r
public StarDrawer(){\r
}\r
\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.Shape;\r
import java.awt.geom.GeneralPath;\r
\r
-public class UpperTriangleDrawer extends AbstractMarkDrawer{\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+class UpperTriangleDrawer extends AbstractMarkDrawer{\r
\r
public UpperTriangleDrawer(){\r
super();\r
package jp.naist.se.stigmata.ui.swing.mds.mark;\r
\r
+/*\r
+ * $Id$\r
+ */\r
+\r
import java.awt.Shape;\r
import java.awt.geom.GeneralPath;\r
\r
-public class XMarkDrawer extends LineMarkDrawer{\r
+/**\r
+ * \r
+ * @author Haruaki TAMADA\r
+ * @version $Revision$ $Date$\r
+ */\r
+class XMarkDrawer extends LineMarkDrawer{\r
public XMarkDrawer(){\r
}\r
\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing.tab;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.awt.LayoutManager;\r
+import java.awt.Rectangle;\r
+import java.awt.event.MouseAdapter;\r
+import java.awt.event.MouseEvent;\r
+\r
+import javax.swing.JPanel;\r
+\r
+/**\r
+ * This program is copied from below URL.\r
+ * http://terai.xrea.jp/Swing/EditTabTitle.html\r
+ * \r
+ * @author Haruaki Tamada\r
+ * @author Terai Atsuhiro\r
+ * @version $Revision$ $Date$\r
+ */\r
+class EditableGlassPane extends JPanel{\r
+ private static final long serialVersionUID = 9009103705988625476L;\r
+\r
+ private EditableTabbedPane pane;\r
+ private Rectangle rect;\r
+\r
+ public EditableGlassPane(EditableTabbedPane panel){\r
+ super((LayoutManager)null);\r
+ this.pane = panel;\r
+\r
+ setOpaque(false);\r
+ addMouseListener(new MouseAdapter(){\r
+ public void mouseClicked(MouseEvent e){\r
+ if(rect == null || rect.contains(e.getPoint()))\r
+ return;\r
+ pane.renameTab();\r
+ }\r
+ });\r
+ }\r
+\r
+ public void setRectangle(int x, int y, int w, int h){\r
+ setRectangle(new Rectangle(x, y, w, h));\r
+ }\r
+\r
+ public void setRectangle(Rectangle rect){\r
+ this.rect = rect;\r
+ }\r
+\r
+ public Rectangle getRectangle(){\r
+ return rect;\r
+ }\r
+}\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing.tab;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.awt.FocusTraversalPolicy;\r
+import java.awt.Rectangle;\r
+import java.awt.event.FocusAdapter;\r
+import java.awt.event.FocusEvent;\r
+import java.awt.event.KeyAdapter;\r
+import java.awt.event.KeyEvent;\r
+import java.awt.event.MouseAdapter;\r
+import java.awt.event.MouseEvent;\r
+\r
+import javax.swing.BorderFactory;\r
+import javax.swing.JFrame;\r
+import javax.swing.JMenuBar;\r
+import javax.swing.JTabbedPane;\r
+import javax.swing.JTextField;\r
+\r
+/**\r
+ * This program is copied from below URL.\r
+ * http://terai.xrea.jp/Swing/EditTabTitle.html\r
+ * \r
+ * @author Haruaki Tamada\r
+ * @author Terai Atsuhiro\r
+ * @version $Revision$ $Date$\r
+ */\r
+public class EditableTabbedPane extends JTabbedPane{\r
+ private static final long serialVersionUID = -66174062280771547L;\r
+\r
+ private final EditableGlassPane panel;\r
+ private final JTextField editor;\r
+ private final JFrame frame;\r
+ private final FocusTraversalPolicy policy;\r
+ private FocusTraversalPolicy ftp;\r
+\r
+ public EditableTabbedPane(JFrame frame){\r
+ this.frame = frame;\r
+ this.panel = new EditableGlassPane(this);\r
+ this.editor = new JTextField();\r
+\r
+ policy = new EditableTabbedPaneFocusTraversalPolicy(editor);\r
+\r
+ editor.setBorder(BorderFactory.createEmptyBorder(0, 3, 0, 3));\r
+ editor.addFocusListener(new FocusAdapter(){\r
+ public void focusGained(final FocusEvent e){\r
+ ((JTextField)e.getSource()).selectAll();\r
+ }\r
+ });\r
+ editor.addKeyListener(new KeyAdapter(){\r
+ public void keyPressed(KeyEvent e){\r
+ if(e.getKeyCode() == KeyEvent.VK_ENTER){\r
+ renameTab();\r
+ }\r
+ else if(e.getKeyCode() == KeyEvent.VK_ESCAPE){\r
+ cancelEditing();\r
+ }\r
+ }\r
+ });\r
+ addMouseListener(new MouseAdapter(){\r
+ public void mouseClicked(MouseEvent me){\r
+ if(me.getClickCount() == 2){\r
+ startEditing();\r
+ }\r
+ }\r
+ });\r
+ addKeyListener(new KeyAdapter(){\r
+ public void keyPressed(KeyEvent e){\r
+ if(e.getKeyCode() == KeyEvent.VK_ENTER){\r
+ startEditing();\r
+ }\r
+ }\r
+ });\r
+\r
+ frame.setGlassPane(panel);\r
+ panel.add(editor);\r
+ panel.setVisible(false);\r
+ }\r
+\r
+ void renameTab(){\r
+ frame.setFocusTraversalPolicy(ftp);\r
+ if(editor.getText().trim().length() > 0){\r
+ setTitleAt(getSelectedIndex(), editor.getText());\r
+ }\r
+ panel.setVisible(false);\r
+ }\r
+\r
+ private void startEditing(){\r
+ initEditor();\r
+ ftp = frame.getFocusTraversalPolicy();\r
+ panel.setVisible(true);\r
+ editor.requestFocusInWindow();\r
+ frame.setFocusTraversalPolicy(policy);\r
+ }\r
+\r
+ private void cancelEditing(){\r
+ frame.setFocusTraversalPolicy(ftp);\r
+ panel.setVisible(false);\r
+ }\r
+\r
+ private void initEditor(){\r
+ JMenuBar bar = frame.getJMenuBar();\r
+ Rectangle rect = getUI().getTabBounds(this, getSelectedIndex());\r
+ rect.setRect(rect.x + 2, rect.y + 2, rect.width - 2, rect.height - 2);\r
+ if(bar != null){\r
+ rect.y += bar.getSize().height;\r
+ }\r
+ panel.setRectangle(rect);\r
+\r
+ editor.setBounds(rect);\r
+ editor.setText(getTitleAt(getSelectedIndex()));\r
+ }\r
+}\r
--- /dev/null
+package jp.naist.se.stigmata.ui.swing.tab;\r
+\r
+/*\r
+ * $Id$\r
+ */\r
+\r
+import java.awt.Component;\r
+import java.awt.Container;\r
+import java.awt.FocusTraversalPolicy;\r
+\r
+import javax.swing.JTextField;\r
+\r
+/**\r
+ * This program is copied from below URL.\r
+ * http://terai.xrea.jp/Swing/EditTabTitle.html\r
+ * \r
+ * @author Haruaki Tamada\r
+ * @author Terai Atsuhiro\r
+ * @version $Revision$ $Date$\r
+ */\r
+class EditableTabbedPaneFocusTraversalPolicy extends FocusTraversalPolicy{\r
+ private JTextField editor;\r
+\r
+ public EditableTabbedPaneFocusTraversalPolicy(JTextField editor){\r
+ this.editor = editor;\r
+ }\r
+\r
+ @Override\r
+ public Component getFirstComponent(Container focusCycleRoot){\r
+ return null;\r
+ }\r
+\r
+ @Override\r
+ public Component getLastComponent(Container focusCycleRoot){\r
+ return editor;\r
+ }\r
+\r
+ @Override\r
+ public Component getComponentAfter(Container focusCycleRoot, Component cmp){\r
+ return editor;\r
+ }\r
+\r
+ @Override\r
+ public Component getComponentBefore(Container focusCycleRoot, Component cmp){\r
+ return editor;\r
+ }\r
+\r
+ @Override\r
+ public Component getDefaultComponent(Container focusCycleRoot){\r
+ return editor;\r
+ }\r
+}\r
<!ELEMENT birthmark-similarity (#PCDATA)>\r
<!ELEMENT similarity (#PCDATA)>\r
\r
-<!ELEMENT birthmark-service (type,display-type,description,class-name)>\r
-<!ELEMENT birthmark-services ((birthmark-service)*)>\r
+<!ELEMENT birthmark-service (type,display-type,description?,class-name)>\r
+<!ELEMENT birthmark-services (birthmark-service*)>\r
\r
-<!ELEMENT birthmark ((element)*)>\r
+<!ELEMENT birthmark (element*)>\r
<!ELEMENT extracted-birthmark (class-name,location,birthmark)>\r
-<!ELEMENT extracted-birthmarks ((extracted-birthmark)*)>\r
+<!ELEMENT extracted-birthmarks (extracted-birthmark*)>\r
\r
<!ELEMENT target1 (class-name,location)>\r
<!ELEMENT target2 (class-name,location)>\r
-<!ELEMENT birthmark-similarities ((birthmark-similarity)*)>\r
+<!ELEMENT birthmark-similarities (birthmark-similarity*)>\r
<!ELEMENT comparison-result (target1,target2,birthmark-similarities,similarity)>\r
-<!ELEMENT comparison-result-set ((comparison-result)*)>\r
+<!ELEMENT comparison-result-set (comparison-result*)>\r
\r
<!ELEMENT birthmark ((birthmark-services|extracted-birthmarks|comparison-result-set)+)>\r
\r
+++ /dev/null
-<?xml version="1.0" encoding="euc-jp"?>\r
-\r
-<!--\r
- $Id$\r
--->\r
-\r
-<!ELEMENT classpath (#PCDATA)>\r
-\r
-<!ELEMENT type (#PCDATA)>\r
-<!ELEMENT display-name (#PCDATA)>\r
-<!ELEMENT description (#PCDATA)>\r
-<!ELEMENT extractor (#PCDATA)>\r
-<!ELEMENT comparator (#PCDATA)>\r
-\r
-<!ELEMENT suffix (#PCDATA)>\r
-<!ELEMENT prefix (#PCDATA)>\r
-<!ELEMENT match (#PCDATA)>\r
-\r
-<!ELEMENT name (#PCDATA)>\r
-<!ELEMENT value (#PCDATA)>\r
-\r
-<!ELEMENT exclude ((suffix,prefix,match)*)>\r
-\r
-<!ELEMENT package ((suffix,prefix,match)*)>\r
-\r
-<!ELEMENT class-name ((suffix,prefix,match)*)>\r
-\r
-<!ELEMENT fully-name ((suffix,prefix,match)*)>\r
-\r
-<!ELEMENT wellknown-classes ((exclude,package,class-name,fully-name)*)>\r
-\r
-<!ELEMENT property (name,value)>\r
-\r
-<!ELEMENT properties (property*)>\r
-\r
-<!ELEMENT service (type,display-name,description,extractor,comparator)>\r
-\r
-<!ELEMENT services (service*)>\r
-\r
-<!ELEMENT classpath-list (classpath*)>\r
-\r
-<!ELEMENT birthmark (services,wellknown-classes,classpath-list,properties) >\r
-\r
<!ELEMENT property (name,value)>\r
<!ELEMENT properties (property*)>\r
\r
-<!ELEMENT birthmark-service (type,display-name,description,extractor,comparator)>\r
+<!ELEMENT birthmark-service (type,display-name,description?,extractor,comparator)>\r
<!ELEMENT birthmark-services (birthmark-service*)>\r
\r
<!ELEMENT classpath-list (classpath*)>\r
Copyright (C) by ${implementation.vendor} 2004-2007,\r
All right reserved.\r
\r
-This product includes software developed by\r
-Apache Software Foundation.\r
+Stigmata uses ASM library for engineering Java bytecode.\r
+http://asm.objectweb.org/\r
+\r
+Stigmata uses libraries developed by Apache Software Foundation.\r
http://www.apache.org/\r
\r
-This product includes icons provided by\r
-FAMFAMFAM.\r
+Stigmata uses Jama (Java matrix package) in calculating MDS.\r
+http://math.nist.gov/javanumerics/jama/\r
+\r
+Stigmata uses icons provided by FAMFAMFAM.\r
http://www.famfamfam.com/\r
\r
Stigmata version ${implementation.version}, Copyright (C) 2006-2007 Haruaki TAMADA\r
Stigmata comes with ABSOLUTELY NO WARRANTY; for details\r
select menu item named License. This is free software, \r
and you are welcome to redistribute it under certain \r
-conditions; select menu item named License for details.
\ No newline at end of file
+conditions; select menu item named License for details.\r
+# $Id$\r
+# $Revision$ $Date$\r
+\r
stigmata.version=${pom.version}\r
\r
icon.directory=/resources/images/\r
showgraph.button.label=Graph\r
showgraph.button.tooltip=Show distribution graph of birthmark similarity.\r
showgraph.button.icon=chart_curve.png\r
-showgraph.menu.label=Graph\r
-showgraph.menu.tooltip=Show distribution graph of birthmark similarity.\r
-showgraph.menu.icon=chart_curve.png\r
+showgraph.menu.label=${showgraph.button.label}\r
+showgraph.menu.tooltip=${showgraph.button.tooltip}\r
+showgraph.menu.icon=${showgraph.button.icon}\r
\r
mdsmap.menuitem.label=Distance Mapping\r
mdsmap.menuitem.tooltip=Mapping all classes into 2-d plane.\r
################################################\r
\r
savemds.label=Save MDS Graph...\r
+savemds.button.label=${savemds.label}\r
+savemds.menuitem.label=${savemds.label}\r
savemds.icon=picture_save.png\r
savemds.tooltip=Save mds graph image to file.\r
savemds.button.tooltip=${savemds.tooltip}\r
savemds.description=Save mds graph as image file ({0})\r
\r
savelocation.label=Save coordinate\r
+savelocation.button.label=${savelocation.label}\r
+savelocation.menuitem.label=${savelocation.label}\r
savelocation.icon=table_save.png\r
savelocation.tooltip=Save coordinates as csv\r
savelocation.menuitem.tooltip=${savelocation.tooltip}\r
savelocation.description=Save coordinates (csv)\r
\r
updatecolor.label=Update color...\r
+updatecolor.tooltip=Update color\r
+updatecolor.button.label=${updatecolor.label}\r
+updatecolor.button.tooltip=${updatecolor.tooltip}\r
+updatecolor.menuitem.label=${updatecolor.label}\r
updateovercolor.label=Update pointed color...\r
+updateovercolor.button.label=${updateovercolor.label}\r
+updateovercolor.menuitem.label=${updateovercolor.label}\r
updatecolor.icon=color_swatch.png\r
updateovercolor.icon=${updatecolor.icon}\r
-updatecolor.button.tooltip=\r
+updateovercolor.tooltip=Update mouse over color.\r
+updateovercolor.button.tooltip=${updateovercolor.tooltip}\r
\r
################################################\r
# graph pane\r
\r
savegraph.button.label=Save Graph...\r
savegraph.button.icon=picture_save.png\r
-savegraph.extensions=png, jpg, gif\r
+savegraph.extensions=png, jpg\r
savegraph.description=Save graph as image file ({0})\r
\r
changecolor.label=Change Color...\r
specifiedpair.label=Specified pair...\r
roundrobin.filtering.label=Filtering round robin...\r
\r
-roundrobin.button.label=Compare round robin\r
+roundrobin.button.label=Comparing round robin\r
roundrobin.button.tooltip=Compare birthmarks by round robin comparison from selected files\r
roundrobin.button.icon=arrow_right_left.png\r
+roundrobin.menuitem.label=${roundrobin.button.label}\r
+roundrobin.menuitem.tooltip=${roundrobin.button.tooltip}\r
\r
-guessedpair.button.label=Compare guessed pair\r
+guessedpair.button.label=Comparing guessed pair\r
guessedpair.button.tooltip=Compare birthmarks by guessed pair\r
guessedpair.button.icon=arrow_right_left.png\r
-\r
-roundrobin.menuitem.label=${roundrobin.button.label}\r
guessedpair.menuitem.label=${guessedpair.button.label}\r
+guessedpair.menuitem.tooltip=${guessedpair.button.tooltip}\r
+\r
specifiedpair.menuitem.label=Comparing specified pair...\r
-roundrobin.filtering.menuitem.label=Filtering round robin comparison pair...\r
+specifiedpair.menuitem.tooltip=Compare birthmarks by specified pair\r
+\r
+roundrobin.filtering.menuitem.label=Filtering round robin result\r
+roundrobin.filtering.menuitem.tooltip=Filtering the result pairs of comparing birthmarks by round robin.\r
\r
comparison.methods=roundrobin,guessedpair,specifiedpair,roundrobin.filtering\r
comparison.methods.inroundrobinresult=guessedpair,specifiedpair,roundrobin.filtering\r
error.negative.value={0}: Unacceptable negative value\r
error.over.range=Over acceptable range. valid range is {0}.\r
error.io=IOException: {0}\r
+error.unsupportedformat={0}: unsupported format\r
\r
target1.button.label=${target.TARGET1} birthmark\r
target2.button.label=${target.TARGET2} birthmark\r
+# $Id$\r
+# $Revision$ $Date$\r
+\r
+\r
################################################\r
# StigmataFrame\r
################################################\r
control.tab.tooltip=\83o\81[\83X\83}\81[\83N\92\8a\8fo\81E\94ä\8ar\90Ý\92è\r
\r
extract.tab.label=\92\8a\8fo\8c\8b\89Ê {0}\r
-extract.tab.tooltip={1}\82©\82ç\92\8a\8fo\82µ\82½\83o\81[\83X\83}\81[\83N({0}).\r
+extract.tab.tooltip=\92\8a\8fo\82µ\82½\83o\81[\83X\83}\81[\83N({0}).\r
\r
compare.tab.label=\94ä\8ar\8c\8b\89Ê {0}\r
compare.tab.tooltip=<{1}>\82Æ<{2}>\82ð\94ä\8ar({0}).\r
comparedetail.tab.label=\94ä\8ar\8fÚ\8d× {0}\r
comparedetail.tab.tooltip={1}\82Æ{2}\82©\82ç{0}\83o\81[\83X\83}\81[\83N\82ð\92\8a\8fo\81E\94ä\8ar\82µ\82½\8c\8b\89Ê\r
\r
-graph.tab.label=\97Þ\8e\97\90«\83O\83\89\83t {0}\r
-graph.tab.tooltip=\97Þ\8e\97\93x\95ª\95z\90}\r
+similaritygraph.tab.label=\97Þ\8e\97\90«\83O\83\89\83t {0}\r
+similaritygraph.tab.tooltip=\97Þ\8e\97\93x\95ª\95z\90}\r
+\r
+mappinggraph.tab.label=MDS\83O\83\89\83t {0}\r
+mappinggraph.tab.tooltip=\83o\81[\83X\83}\81[\83N\97Þ\8e\97\93x\82É\82æ\82éMDS\82Ì\83N\83\89\83X\95ª\95z\r
\r
store.description=\8c\8b\89Ê\82Ì\95Û\91¶ ({0})\r
\r
# wellknown class checker\r
wellknownclasschecker.border=\8aù\92m\82Ì\83N\83\89\83X\94»\92è\8aí\r
wellknownclasschecker.default.tooltip=\r
-wellknownclasschecker.wellknown.tooltip=\93ü\97Í\82³\82ê\82½\83N\83\89\83X\82Í\8aù\92m\82Ì\83N\83\89\83X\82Å\82·\81D\r
-wellknownclasschecker.notwellknown.tooltip=\93ü\97Í\82³\82ê\82½\83N\83\89\83X\82Í\8aù\92m\82Ì\83N\83\89\83X\82Å\82Í\82 \82è\82Ü\82¹\82ñ\81D\r
+wellknownclasschecker.wellknown.tooltip=\8aù\92m\82Ì\83N\83\89\83X\82Å\82·\81D\r
+wellknownclasschecker.notwellknown.tooltip=\8aù\92m\82Ì\83N\83\89\83X\82Å\82Í\82 \82è\82Ü\82¹\82ñ\81D\r
+wellknownclasschecker.dialog.title=\94»\92è\8c\8b\89Ê\r
\r
#rule table\r
prefix.label=\90Ú\93ª\8e«\r
classpathchecker.default.tooltip=\r
classpathchecker.found.tooltip=\8c©\82Â\82©\82è\82Ü\82µ\82½\r
classpathchecker.notfound.tooltip=\8c©\82Â\82©\82è\82Ü\82¹\82ñ\82Å\82µ\82½\r
++classpathchecker.dialog.title=\8c\9f\8dõ\8c\8b\89Ê\r
\r
################################################\r
#CompareTablePane\r
showgraph.button.label=\83O\83\89\83t\r
showgraph.button.tooltip=\83o\81[\83X\83}\81[\83N\82Ì\97Þ\8e\97\90«\82Ì\95ª\95z\90}\r
\r
-changecolor.button.label=\90F\82Ì\95Ï\8dX\r
+mdsmap.menuitem.label=MDS\95ª\90Í\r
+mdsmap.menuitem.tooltip=\97Þ\8e\97\93x\82©\82ç\91S\82Ä\82Ì\83N\83\89\83X\82ð2D\95½\96Ê\8fã\82É\8dÅ\93K\94z\92u\82µ\82Ü\82·\81D\r
+\r
+changecolor.label=\90F\82Ì\95Ï\8dX\r
changecolor.title=\90F\82Ì\95Ï\8dX\r
\r
+showlabel.button.label=\83\89\83x\83\8b\82Ì\95\\8e¦\r
+\r
################################################\r
#BirthmarksViewPane\r
################################################\r
\r
comparemapping.description=\91Î\89\9e\8aÖ\8cW\83t\83@\83C\83\8b ({0})\r
\r
-roundrobin.label=\91\8d\93\96\82è\82Å\94ä\8ar\r
+roundrobin.label=\91\8d\93\96\82½\82è\82Å\94ä\8ar\r
guessedpair.label=\83y\83A\82ð\90\84\91ª\82µ\82Ä\94ä\8ar\r
specifiedpair.label=\83y\83A\82ð\8ew\92è\82µ\82Ä\94ä\8ar...\r
roundrobin.filtering.label=\91\8d\93\96\82è\8c\8b\89Ê\82ð\83t\83B\83\8b\83^\83\8a\83\93\83O...\r
\r
+roundrobin.button.label=\91\8d\93\96\82½\82è\82Å\94ä\8ar\r
+roundrobin.button.tooltip=\92\8a\8fo\82³\82ê\82½\91S\82Ä\82Ì\83o\81[\83X\83}\81[\83N\82ð\91\8d\93\96\82½\82è\82Å\94ä\8ar\82·\82é\81D\r
+\r
+guessedpair.button.label=\83y\83A\82ð\90\84\91ª\82µ\82Ä\94ä\8ar\r
+guessedpair.button.tooltip=\92\8a\8fo\82³\82ê\82½\83o\81[\83X\83}\81[\83N\82ð\92\8a\8fo\8c³\82Ì\96¼\91O\82ð\8c³\82É\83y\83A\82ð\90\84\91ª\82µ\82Ä\94ä\8ar\82·\82é\81D\r
+\r
+specifiedpair.menuitem.label=\83y\83A\82ð\8ew\92è\82µ\82Ä\94ä\8ar...\r
+specifiedpair.menuitem.tooltip=\83o\81[\83X\83}\81[\83N\82Ì\92\8a\8fo\8c³\82Ì\96¼\91O\82Å\83y\83A\82ð\8ew\92è\82µ\82Ä\94ä\8ar\82·\82é\81D\r
+\r
+roundrobin.filtering.menuitem.label=\91\8d\93\96\82½\82è\94ä\8ar\82Ì\8c\8b\89Ê\82ð\83t\83B\83\8b\83^\83\8a\83\93\83O...\r
+roundrobin.filtering.menuitem.tooltip=\91\8d\93\96\82½\82è\94ä\8ar\82Ì\8c\8b\89Ê\82ð\93Á\92è\82Ì\8fð\8c\8f\82Å\83t\83B\83\8b\83^\83\8a\83\93\83O\82·\82é\81D\r
+\r
result.border=\94ä\8ar\8c\8b\89Ê\97Þ\8e\97\93x\r
eachbirthmarksimilarity.border=\8ae\83o\81[\83X\83}\81[\83N\8aÔ\82Ì\97Þ\8e\97\93x\r
comparisonresultset.tab.label=\83y\83A\82Ì\94ä\8ar\8c\8b\89Ê {0}\r
obfuscate.button.tooltip=\83N\83\89\83X\96¼\82ð\88Ó\96¡\82Ì\82È\82¢\96¼\91O\82É\95Ï\82¦\81C\93ï\93Ç\89»\82µ\82Ü\82·\81D\82Ü\82½\81C\93ï\93Ç\89»\91O\8cã\82Ì\83}\83b\83s\83\93\83O\82ðCVS\8c`\8e®\82Å\95Û\91¶\82µ\82Ü\82·\81D\r
obfuscationmapping.description=\93ï\93Ç\89»\91O\8cã\82Ì\96¼\91O\82Ì\83}\83b\83s\83\93\83O\82ð\95Û\91¶ (csv)\r
\r
+################################################\r
+# mds graph pane\r
+################################################\r
+\r
+savemds.label=MDS\83O\83\89\83t\82ð\95Û\91¶...\r
+savemds.tooltip=\83O\83\89\83t\83C\83\81\81[\83W\82ð\83t\83@\83C\83\8b\82É\95Û\91¶\82µ\82Ü\82·\81D\r
+savemds.description=MDS\83O\83\89\83t\82ð\89æ\91\9c\83t\83@\83C\83\8b\82É\95Û\91¶ ({0})\r
+\r
+savelocation.label=\8dÀ\95W\82ð\95Û\91¶...\r
+savelocation.tooltip=\8dÀ\95W\82ðCSV\8c`\8e®\82É\95Û\91¶\82µ\82Ü\82·\81D\r
+savelocation.description=\8dÀ\95W\82Ì\95Û\91¶ (csv)\r
+\r
+updatecolor.label=\90F\82Ì\8dX\90V...\r
+updatecolor.tooltip=\83v\83\8d\83b\83g\82µ\82Ä\82¢\82é\93_\82Ì\90F\82ð\8dX\90V\82µ\82Ü\82·\81D\r
+updateovercolor.label=\8b\92²\8e\9e\82Ì\90F\82Ì\8dX\90V...\r
+updateovercolor.tooltip=\83}\83E\83X\83I\81[\83o\81[\8e\9e\82Ì\90F\82ð\8dX\90V\82µ\82Ü\82·\81D\r
+\r
###########################################################\r
# BirthmarkDefinitionPane\r
###########################################################\r
error.negative.value={0}: \95\89\82Ì\92l\82ð\93ü\97Í\82·\82é\82±\82Æ\82Í\82Å\82«\82Ü\82¹\82ñ\81D\r
error.over.range=\94Í\88Í\82ð\89z\82¦\82Ä\82¢\82Ü\82·\81D{0}\82Ì\94Í\88Í\82É\8eû\82Ü\82é\82æ\82¤\82É\82µ\82Ä\82\82¾\82³\82¢\81D\r
error.io=I/O\83G\83\89\81[: {0}\r
+error.unsupportedformat={0}: \83T\83|\81[\83g\82µ\82Ä\82¢\82È\82¢\83t\83H\81[\83}\83b\83g\82ª\8ew\92è\82³\82ê\82Ü\82µ\82½\81D\r
\r
target1.button.label=${target.TARGET1}\83o\81[\83X\83}\81[\83N\r
target2.button.label=${target.TARGET2}\83o\81[\83X\83}\81[\83N\r
\r
Birthmark birthmark = array[0].getBirthmark("smc");\r
Assert.assertEquals("smc", birthmark.getType());\r
- Assert.assertEquals(77, birthmark.getElementCount());\r
+ Assert.assertEquals(76, birthmark.getElementCount());\r
\r
BirthmarkElement[] elements = birthmark.getElements();\r
for(int i = 0; i < elements.length; i++){\r
elements[i].getClass().getName()\r
);\r
}\r
+ /*\r
int index = 0;\r
- Assert.assertEquals("java.lang.Object#<init>", elements[index++].getValue());\r
Assert.assertEquals("java.io.FileInputStream#<init>", elements[index++].getValue());\r
Assert.assertEquals("java.io.File#<init>", elements[index++].getValue());\r
Assert.assertEquals("java.io.File#exists", elements[index++].getValue());\r
elements[index++].getValue());\r
Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].getValue());\r
Assert.assertEquals("java.util.Iterator#next", elements[index++].getValue());\r
+ */\r
}\r
\r
@Test\r
elements[i].getClass().getName()\r
);\r
}\r
+ /*\r
+ int index = 0;\r
// <init>(BirthmarkSet[], BirthmarkContext, boolean)\r
- Assert.assertEquals("java.lang.Object#<init>", elements[ 0].toString());\r
- Assert.assertEquals("java.util.Arrays#asList", elements[ 1].toString());\r
- Assert.assertEquals("java.util.Arrays#asList", elements[ 2].toString());\r
- Assert.assertEquals("java.lang.Object#<init>", elements[ 3].toString());\r
+ Assert.assertEquals("java.lang.Object#<init>", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Arrays#asList", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Arrays#asList", elements[index++].toString());\r
+ Assert.assertEquals("java.lang.Object#<init>", elements[index++].toString());\r
\r
// <init>(BirthmarkSet[], BirthmarkSet[], BirthmarkContext, boolean)\r
- Assert.assertEquals("java.util.Arrays#asList", elements[ 4].toString());\r
- Assert.assertEquals("java.util.Arrays#asList", elements[ 5].toString());\r
+ Assert.assertEquals("java.util.Arrays#asList", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Arrays#asList", elements[index++].toString());\r
\r
// setCompareSamePair\r
- Assert.assertEquals("java.util.List#size", elements[ 6].toString());\r
- Assert.assertEquals("java.util.List#size", elements[ 7].toString());\r
- Assert.assertEquals("java.util.List#size", elements[ 8].toString());\r
- Assert.assertEquals("java.util.List#size", elements[ 9].toString());\r
+ Assert.assertEquals("java.util.List#size", elements[index++].toString());\r
+ Assert.assertEquals("java.util.List#size", elements[index++].toString());\r
+ Assert.assertEquals("java.util.List#size", elements[index++].toString());\r
+ Assert.assertEquals("java.util.List#size", elements[index++].toString());\r
\r
// getComparisonSources\r
- Assert.assertEquals("java.util.HashMap#<init>", elements[10].toString());\r
- Assert.assertEquals("java.util.List#iterator", elements[11].toString());\r
- Assert.assertEquals("java.util.Iterator#next", elements[12].toString());\r
- Assert.assertEquals("java.util.Map#put", elements[13].toString());\r
- Assert.assertEquals("java.util.Iterator#hasNext", elements[14].toString());\r
- Assert.assertEquals("java.util.List#iterator", elements[15].toString());\r
- Assert.assertEquals("java.util.Iterator#next", elements[16].toString());\r
- Assert.assertEquals("java.util.Map#put", elements[17].toString());\r
- Assert.assertEquals("java.util.Iterator#hasNext", elements[18].toString());\r
- Assert.assertEquals("java.util.Map#size", elements[19].toString());\r
- Assert.assertEquals("java.util.Map#entrySet", elements[20].toString());\r
- Assert.assertEquals("java.util.Set#iterator", elements[21].toString());\r
- Assert.assertEquals("java.util.Iterator#next", elements[22].toString());\r
- Assert.assertEquals("java.util.Map$Entry#getValue", elements[23].toString());\r
- Assert.assertEquals("java.util.Iterator#hasNext", elements[24].toString());\r
+ Assert.assertEquals("java.util.HashMap#<init>", elements[index++].toString());\r
+ Assert.assertEquals("java.util.List#iterator", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Iterator#next", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Map#put", elements[index++].toString());\r
+ Assert.assertEquals("java.util.List#iterator", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Iterator#next", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Map#put", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Map#size", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Map#entrySet", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Set#iterator", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Iterator#hasNext", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Iterator#next", elements[index++].toString());\r
+ Assert.assertEquals("java.util.Map$Entry#getValue", elements[index++].toString());\r
+ */\r
}\r
}\r