<version>4.3</version>\r
<scope>test</scope>\r
</dependency>\r
+ <dependency>\r
+ <groupId>jp.sourceforge</groupId>\r
+ <artifactId>hermes</artifactId>\r
+ <version>1.0.0-SNAPSHOT</version>\r
+ </dependency>\r
</dependencies>\r
\r
<licenses>\r
* $Id$
*/
+import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Image;
-import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
+import javax.swing.JOptionPane;
import javax.swing.JPanel;
+import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
-import javax.swing.border.TitledBorder;
+import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
+import javax.swing.border.TitledBorder;
import jp.sourceforge.talisman.i18n.Messages;
tabPane.setTabComponentAt(tabPane.getTabCount() - 1, panel);
}
}
+
+ public static void showErrorDialog(Component parent, Messages messages, Exception e){
+ JPanel panel = new JPanel(new BorderLayout());
+ JTextArea area = new JTextArea();
+ StringWriter out = new StringWriter();
+ e.printStackTrace(new PrintWriter(out));
+ String stackTrace = out.toString();
+
+ panel.add(new JLabel(e.getLocalizedMessage()), BorderLayout.NORTH);
+ panel.add(new JScrollPane(area), BorderLayout.CENTER);
+ area.setText(stackTrace);
+ area.setEditable(false);
+ panel.setPreferredSize(new Dimension(500, 400));
+ panel.setSize(panel.getPreferredSize());
+
+ JOptionPane.showMessageDialog(parent, panel, messages.get("error.dialog.title"), JOptionPane.WARNING_MESSAGE);
+ }
}
}
}
+ private void onlineUpdate(){
+ UpdatePluginsPane pane = new UpdatePluginsPane(this);
+ JOptionPane.showMessageDialog(this, pane);
+ }
+
private void installPlugin(){
File pluginFile = getOpenFile(
new String[] { "jar", },
setDefaultUI();
JMenuBar menubar = new JMenuBar();
menubar.add(createFileMenu());
+ menubar.add(createPluginsMenu());
menubar.add(createHelpMenu());
setJMenuBar(menubar);
setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
}
+ private JMenu createPluginsMenu(){
+ JMenu pluginsMenu = GUIUtility.createJMenu(getMessages(), "pluginsMenu");
+ JMenuItem installMenu = GUIUtility.createJMenuItem(getMessages(), "installplugin");
+ JMenuItem openSettingDirMenu = GUIUtility.createJMenuItem(getMessages(), "opensettingdir", new OpenSettingDirAction(this, getMessages()));
+ JMenuItem onlineUpdate = GUIUtility.createJMenuItem(getMessages(), "onlineupdate");
+
+ pluginsMenu.add(openSettingDirMenu);
+ pluginsMenu.add(installMenu);
+ pluginsMenu.add(new JSeparator());
+ pluginsMenu.add(onlineUpdate);
+
+ installMenu.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent evt){
+ installPlugin();
+ }
+ });
+ onlineUpdate.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent e){
+ onlineUpdate();
+ }
+ });
+
+ return pluginsMenu;
+ }
+
private JMenu createFileMenu(){
JMenu fileMenu = GUIUtility.createJMenu(getMessages(), "fileMenu");
JMenuItem newFrameMenu = GUIUtility.createJMenuItem(getMessages(), "newframe");
JMenuItem exportMenu = GUIUtility.createJMenuItem(getMessages(), "exportsetting");
JMenuItem clearMenu = GUIUtility.createJMenuItem(getMessages(), "clearsetting");
JMenuItem refreshMenu = GUIUtility.createJMenuItem(getMessages(), "refreshsetting");
- JMenuItem installMenu = GUIUtility.createJMenuItem(getMessages(), "installplugin");
- JMenuItem openSettingDirMenu = GUIUtility.createJMenuItem(getMessages(), "opensettingdir", new OpenSettingDirAction(this, getMessages()));
JMenuItem closeTabMenu = GUIUtility.createJMenuItem(getMessages(), "closetab");
JMenuItem closeMenu = GUIUtility.createJMenuItem(getMessages(), "closeframe");
JMenuItem exitMenu = GUIUtility.createJMenuItem(getMessages(), "exit");
fileMenu.add(refreshMenu);
fileMenu.add(clearMenu);
fileMenu.add(new JSeparator());
- fileMenu.add(openSettingDirMenu);
- fileMenu.add(installMenu);
- fileMenu.add(new JSeparator());
fileMenu.add(closeTabMenu);
fileMenu.add(closeMenu);
fileMenu.add(new JSeparator());
clearSettings();
}
});
- installMenu.addActionListener(new ActionListener(){
- public void actionPerformed(ActionEvent evt){
- installPlugin();
- }
- });
+
refreshMenu.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
reloadSettings(new String[] { "gui", });
--- /dev/null
+package jp.sourceforge.stigmata.ui.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.swing.Box;
+import javax.swing.JButton;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
+import javax.swing.border.EmptyBorder;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+import org.apache.commons.cli.ParseException;
+
+import jp.sourceforge.stigmata.Main;
+import jp.sourceforge.stigmata.utils.HermesUtility;
+import jp.sourceforge.talisman.hermes.HermesEvent;
+import jp.sourceforge.talisman.hermes.HermesException;
+import jp.sourceforge.talisman.hermes.HermesPercentageListener;
+import jp.sourceforge.talisman.hermes.InvalidHermesConfigException;
+import jp.sourceforge.talisman.hermes.maven.Artifact;
+import jp.sourceforge.talisman.i18n.Messages;
+
+public class UpdatePluginsPane extends JPanel{
+ private static final long serialVersionUID = 7595296740059360819L;
+
+ private StigmataFrame stigmata;
+ private HermesUtility hermes;
+ private DefaultTableModel model;
+ private JTable table;
+
+ public UpdatePluginsPane(StigmataFrame stigmata){
+ this.stigmata = stigmata;
+ hermes = new HermesUtility();
+
+ initLayout();
+ reload();
+ }
+
+ public void reload(){
+ try{
+ hermes.loadHermesContext(stigmata.getEnvironment());
+ } catch(InvalidHermesConfigException e){
+ GUIUtility.showErrorDialog(stigmata, stigmata.getMessages(), e);
+ } catch(IOException e){
+ GUIUtility.showErrorDialog(stigmata, stigmata.getMessages(), e);
+ }
+ }
+
+ private void updateArtifacts() throws IOException, HermesException{
+ UpdatePluginsPaneHermesListener listener = new UpdatePluginsPaneHermesListener(this, model);
+ hermes.getHermes().addHermesListener(listener);
+ hermes.update();
+ hermes.getHermes().removeHermesListener(listener);
+ hermes.updateContext(stigmata.getEnvironment());
+ Messages m = stigmata.getMessages();
+ int value = JOptionPane.showOptionDialog(
+ stigmata, m.get("restart.stigmata.requrested"),
+ m.get("message.dialog.title"),
+ JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null,
+ new String[] { m.get("restart.now"), m.get("restart.later"), }, null
+ );
+ if(value == JOptionPane.YES_OPTION){
+ stigmata.dispose();
+ try{
+ new Main(new String[0]);
+ } catch(ParseException e){
+ }
+ }
+ }
+
+ private void showLists() throws IOException, HermesException{
+ Artifact[] artifacts = hermes.getUpdateTarget();
+ showLists(artifacts);
+ }
+
+ private void showLists(Artifact[] artifacts){
+ model.setRowCount(0);
+ for(Artifact artifact: artifacts){
+ Artifact original = hermes.getCurrentArtifact(artifact.getGroupId(), artifact.getArtifactId());
+ model.addRow(new Object[] {
+ artifact.getGroupId(), artifact.getArtifactId(),
+ original.getVersion(), artifact.getVersion(),
+ artifact.getScope(), ProgressRenderer.NOT_STARTED
+ });
+ }
+ if(artifacts.length == 0){
+ JOptionPane.showMessageDialog(stigmata, stigmata.getMessages().get("availabe.artifacts.notfound"));
+ }
+ }
+
+ private void initLayout(){
+ Box buttonPane = Box.createHorizontalBox();
+
+ JButton checkButton = GUIUtility.createButton(stigmata.getMessages(), "hermes.check");
+ final JButton updateButton = GUIUtility.createButton(stigmata.getMessages(), "hermes.update");
+
+ checkButton.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent e){
+ try{
+ showLists();
+ updateButton.setEnabled(model.getRowCount() > 0);
+ } catch(IOException e1){
+ GUIUtility.showErrorDialog(stigmata, stigmata.getMessages(), e1);
+ } catch(HermesException e1){
+ GUIUtility.showErrorDialog(stigmata, stigmata.getMessages(), e1);
+ }
+ }
+ });
+ updateButton.addActionListener(new ActionListener(){
+ public void actionPerformed(ActionEvent e){
+ try{
+ updateArtifacts();
+ updateButton.setEnabled(false);
+ } catch(IOException e1){
+ GUIUtility.showErrorDialog(stigmata, stigmata.getMessages(), e1);
+ } catch(HermesException e1){
+ GUIUtility.showErrorDialog(stigmata, stigmata.getMessages(), e1);
+ }
+ }
+ });
+ updateButton.setEnabled(false);
+
+ buttonPane.add(Box.createHorizontalGlue());
+ buttonPane.add(checkButton);
+ buttonPane.add(Box.createHorizontalGlue());
+ buttonPane.add(updateButton);
+ buttonPane.add(Box.createHorizontalGlue());
+
+ model = new DefaultTableModel(){
+ private static final long serialVersionUID = -2538706137335748099L;
+
+ @Override
+ public boolean isCellEditable(int row, int column){
+ return false;
+ }
+
+ public Class<?> getColumnClass(int column){
+ Class<?> clazz = String.class;
+ if(column == ProgressRenderer.PROGRESS_COLUMN){
+ clazz = Integer.class;
+ }
+ return clazz;
+ }
+ };
+ table = new JTable(model);
+ table.setDefaultRenderer(Integer.class, new ProgressRenderer());
+
+ model.setColumnIdentifiers(stigmata.getMessages().getArray("hermes.artifacts.labels"));
+
+ setLayout(new BorderLayout());
+ add(new JScrollPane(table, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS), BorderLayout.CENTER);
+ add(buttonPane, BorderLayout.SOUTH);
+ }
+
+ private static class UpdatePluginsPaneHermesListener implements HermesPercentageListener{
+ private DefaultTableModel model;
+ private UpdatePluginsPane pane;
+ private Map<String, Map<String, Integer>> map;
+
+ public UpdatePluginsPaneHermesListener(UpdatePluginsPane pane, DefaultTableModel model){
+ this.model = model;
+ this.pane = pane;
+ }
+
+ public void downloadDone(HermesEvent e){
+ Artifact a = e.getArtifact();
+ model.setValueAt(ProgressRenderer.DONE, map.get(a.getGroupId()).get(a.getArtifactId()), ProgressRenderer.PROGRESS_COLUMN);
+ }
+
+ public void fileSizeGotten(HermesEvent e){
+ }
+
+ public void progress(HermesEvent e, double progress){
+ Artifact a = e.getArtifact();
+ model.setValueAt(
+ (int)(progress * 100), map.get(a.getGroupId()).get(a.getArtifactId()),
+ ProgressRenderer.PROGRESS_COLUMN
+ );
+ }
+
+ public void finish(HermesEvent e){
+ }
+
+ public void targetResolved(HermesEvent e){
+ Artifact[] artifacts = e.getArtifacts();
+ map = buildArtifactsIndexMap(artifacts);
+ pane.showLists(artifacts);
+ }
+
+ private Map<String, Map<String, Integer>> buildArtifactsIndexMap(Artifact[] artifacts){
+ Map<String, Map<String, Integer>> map = new HashMap<String, Map<String, Integer>>();
+
+ for(int i = 0; i < artifacts.length; i++){
+ String groupId = artifacts[i].getGroupId();
+ Map<String, Integer> submap = map.get(groupId);
+ if(submap == null){
+ submap = new HashMap<String, Integer>();
+ map.put(groupId, submap);
+ }
+ submap.put(artifacts[i].getArtifactId(), i);
+ }
+
+ return map;
+ }
+ }
+
+
+ private static class ProgressRenderer extends DefaultTableCellRenderer{
+ private static final long serialVersionUID = 3098530332351108648L;
+
+ private static final int PROGRESS_COLUMN = 5;
+ public static final int DONE = 100;
+ public static final int NOT_STARTED = -1;
+ public static final int CANCELED = -2;
+
+ private JProgressBar progressBar = new JProgressBar(0, 100);
+
+ public ProgressRenderer(){
+ super();
+ setOpaque(true);
+ progressBar.setBorder(new EmptyBorder(1, 1, 1, 1));
+ }
+
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object originalValue, boolean isSelected, boolean hasFocus, int row, int column){
+ int value = ((Integer)originalValue).intValue();
+ progressBar.setValue(value);
+
+ return progressBar;
+ }
+ }
+}
--- /dev/null
+package jp.sourceforge.stigmata.utils;
+
+/*
+ * $Id$
+ */
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+
+import jp.sourceforge.stigmata.BirthmarkEnvironment;
+import jp.sourceforge.talisman.hermes.Hermes;
+import jp.sourceforge.talisman.hermes.HermesContext;
+import jp.sourceforge.talisman.hermes.HermesContextExporter;
+import jp.sourceforge.talisman.hermes.HermesContextParser;
+import jp.sourceforge.talisman.hermes.HermesException;
+import jp.sourceforge.talisman.hermes.InvalidHermesConfigException;
+import jp.sourceforge.talisman.hermes.maven.Artifact;
+
+/**
+ *
+ * @author Haruaki Tamada
+ * @version $Revision$
+ */
+public class HermesUtility{
+ private HermesContext context;
+ private Hermes hermes;
+ private Artifact[] updateTargets;
+
+ public HermesUtility(BirthmarkEnvironment env) throws IOException, InvalidHermesConfigException{
+ loadHermesContext(env);
+ }
+
+ public HermesUtility(){
+ }
+
+ public void updateContext(BirthmarkEnvironment env) throws IOException{
+ String path = env.getProperty("location.hermes.config");
+ OutputStream out = null;
+ if(path != null && path.startsWith("file:")){
+ out = new URL(path).openConnection().getOutputStream();
+ }
+ else{
+ File file = new File(BirthmarkEnvironment.getStigmataHome(), "plugins/hermes.xml");
+ out = new FileOutputStream(file);
+ }
+ HermesContextExporter exporter = new HermesContextExporter();
+ exporter.export(out, context);
+ if(out != null){
+ out.close();
+ }
+ }
+
+ public void loadHermesContext(BirthmarkEnvironment env) throws IOException, InvalidHermesConfigException{
+ HermesContextParser parser = new HermesContextParser();
+ InputStream in = getInputStream(env);
+ context = parser.parse(in);
+ if(in != null){
+ try{
+ in.close();
+ } catch(IOException e){
+ // ignore exception.
+ }
+ }
+ if(context.getDestination().contains("${stigmata.home}")){
+ String dest = context.getDestination();
+ dest = dest.replace("${stigmata.home}", BirthmarkEnvironment.getStigmataHome());
+ context.setDestination(dest);
+ }
+
+ hermes = new Hermes(context);
+ }
+
+ public boolean canUpdate() throws IOException, HermesException{
+ return getUpdateTarget().length > 0;
+ }
+
+ public Artifact getCurrentArtifact(String groupId, String artifactId){
+ return context.getDependency(groupId, artifactId);
+ }
+
+ public Artifact[] getUpdateTarget() throws IOException, HermesException{
+ if(updateTargets == null){
+ updateTargets = hermes.getUpdateTarget();
+ }
+ return updateTargets;
+ }
+
+ public void update() throws IOException, HermesException{
+ hermes.update();
+ updateTargets = null;
+ }
+
+ public Hermes getHermes(){
+ if(hermes == null){
+ throw new IllegalStateException("call loadHermesContext first!");
+ }
+ return hermes;
+ }
+
+ private InputStream getInputStream(BirthmarkEnvironment env) throws IOException{
+ InputStream in = null;
+ if(env.getProperty("location.hermes.config") != null){
+ try{
+ URL url = new URL(env.getProperty("location.hermes.config"));
+ in = url.openStream();
+ } catch(MalformedURLException e){
+ // ignore exception.
+ }
+ }
+ else{
+ File file = new File(BirthmarkEnvironment.getStigmataHome(), "plugins/hermes.xml");
+ if(!file.exists()){
+ copyFile(getClass().getResource("/resources/hermes.xml"), file);
+ }
+
+ in = new FileInputStream(file);
+ }
+ return in;
+ }
+
+ private void copyFile(URL from, File to) throws IOException{
+ InputStream in = null;
+ OutputStream out = null;
+ try{
+ in = from.openStream();
+ out = new FileOutputStream(to);
+ byte[] data = new byte[256];
+ int read = 0;
+ while((read = in.read(data)) != -1){
+ out.write(data, 0, read);
+ }
+ } finally{
+ if(in != null){
+ in.close();
+ }
+ if(out != null){
+ out.close();
+ }
+ }
+ }
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<hermes>\r
+ <repository-scope>BOTH</repository-scope>\r
+ <dependency-scope>COMPILE, RUNTIME</dependency-scope>\r
+ <destination>${stigmata.home}/plugins</destination>\r
+ <repositories>\r
+ <repository>\r
+ <id>stigmata.sourceforge.jp</id>\r
+ <name>Stigmata Maven Repository</name>\r
+ <url>http://stigmata.sourceforge.jp/maven2/</url>\r
+ </repository>\r
+ </repositories>\r
+\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>jp.sourceforge.stigmata.plugins</groupId>\r
+ <artifactId>wsp</artifactId>\r
+ <version>1.0.0</version>\r
+ <scope>COMPILE</scope>\r
+ </dependency>\r
+ </dependencies>\r
+\r
+ <ignores>\r
+ <ignore>\r
+ <groupId>commons-cli</groupId>\r
+ <artifactId>commons-cli</artifactId>\r
+ </ignore>\r
+ <ignore>\r
+ <groupId>jp.sourceforge.talisman</groupId>\r
+ <artifactId>mds</artifactId>\r
+ </ignore>\r
+ <ignore>\r
+ <groupId>jp.sourceforge.talisman</groupId>\r
+ <artifactId>xmlcli</artifactId>\r
+ </ignore>\r
+ <ignore>\r
+ <groupId>jp.sourceforge.talisman</groupId>\r
+ <artifactId>i18n</artifactId>\r
+ </ignore>\r
+ <ignore>\r
+ <groupId>jp.sourceforge.talisman</groupId>\r
+ <artifactId>csvio</artifactId>\r
+ </ignore>\r
+ <ignore>\r
+ <groupId>commons-dbutils</groupId>\r
+ <artifactId>commons-dbutils</artifactId>\r
+ </ignore>\r
+ <ignore>\r
+ <groupId>commons-logging</groupId>\r
+ <artifactId>commons-logging</artifactId>\r
+ </ignore>\r
+ <ignore>\r
+ <groupId>jp.sourceforge</groupId>\r
+ <artifactId>stigmata</artifactId>\r
+ </ignore>\r
+ <ignore>\r
+ <groupId>jp.sourceforge.stigmata</groupId>\r
+ <artifactId>digger</artifactId>\r
+ </ignore>\r
+ <ignore>\r
+ <groupId>commons-beanutils</groupId>\r
+ <artifactId>commons-beanutils</artifactId>\r
+ </ignore>\r
+ <ignore>\r
+ <groupId>asm</groupId>\r
+ <artifactId>asm-all</artifactId>\r
+ </ignore>\r
+ </ignores>\r
+</hermes>\r
show.coordinate.normalizedstress.label=Normalized stress\r
\r
title.illegal.argument=Illegal Argument\r
+\r
+hermes.check.button.label=Check\r
+hermes.check.button.tooltip=Check dependencies can update.\r
+hermes.check.button.icon=database_table.png\r
+hermes.update.button.label=Check & Update\r
+hermes.update.button.tooltip=Check dependencies and update them.\r
+hermes.update.button.icon=database_save.png\r
+hermes.artifacts.labels=Group Id,Artifact Id,Current Version,New Version,Scope,Status\r
+\r
+pluginsMenu.menu.label=Plugins\r
+onlineupdate.menuitem.label=Online Update...\r
+onlineupdate.menuitem.tooltip=Execute online update\r
+onlineupdate.menuitem.icon=database_lightning.png\r
+\r
+availabe.artifacts.notfound=An available library is not found.\r
+restart.stigmata.requrested=Restarting stigmata is requested.\r
+Do you restart stigmata now?\r
+message.dialog.title=Message\r
+restart.now=Restart Now\r
+restart.later=Restart Later
\ No newline at end of file
rank_4.label=\97Þ\8e\97\93x: (0.6, 0.8]\r
rank_5.label=\97Þ\8e\97\93x: (0.8, 1.0]\r
\r
+\r
+hermes.check.button.label=\8dX\90V\8am\94F\r
+hermes.check.button.tooltip=\88Ë\91¶\83\89\83C\83u\83\89\83\8a\82ª\8dX\90V\89Â\94\\82©\8am\94F\82µ\82Ü\82·\81D\r
+hermes.update.button.label=\8dX\90V\r
+hermes.update.button.tooltip=\88Ë\91¶\83\89\83C\83u\83\89\83\8a\82ª\8dX\90V\89Â\94\\82Å\82 \82ê\82Î\81C\8dX\90V\82µ\82Ü\82·\81D\r
+hermes.artifacts.labels=\83O\83\8b\81[\83vID,\83A\81[\83e\83B\83t\83@\83N\83gID,\8cÃ\82¢\83o\81[\83W\83\87\83\93,\90V\82µ\82¢\83o\81[\83W\83\87\83\93,\83X\83R\81[\83v,\8fó\91Ô\r
+\r
+pluginsMenu.menu.label=\83v\83\89\83O\83C\83\93\r
+onlineupdate.menuitem.label=\83I\83\93\83\89\83C\83\93\83A\83b\83v\83f\81[\83g...\r
+onlineupdate.menuitem.tooltip=\83I\83\93\83\89\83C\83\93\83A\83b\83v\83f\81[\83g\82ð\8eÀ\8ds\82µ\82Ü\82·\81D\r
+\r
+progress.done=\83_\83E\83\93\83\8d\81[\83h\8fI\97¹\r
+progress.canceled=\83L\83\83\83\93\83Z\83\8b\r
+progress.not_started=\83_\83E\83\93\83\8d\81[\83h\89Â\94\\r
+availabe.artifacts.notfound=\8dX\90V\89Â\94\\82È\83\89\83C\83u\83\89\83\8a\82Í\8c©\82Â\82©\82è\82Ü\82¹\82ñ\82Å\82µ\82½\81D\r
+restart.stigmata.requrested=\8dX\90V\82µ\82½\83\89\83C\83u\83\89\83\8a\82ð\8eg\82¤\82É\82ÍStigmata\82ð\8dÄ\8bN\93®\82·\82é\95K\97v\82ª\82 \82è\82Ü\82·\81D\r
+\8d¡\82·\82®\8dÄ\8bN\93®\82ð\8ds\82¢\82Ü\82·\82©?\r
+message.dialog.title=\83\81\83b\83Z\81[\83W\r
+restart.now=\8dÄ\8bN\93®\r
+restart.later=\8eè\93®\82Å\8dÄ\8bN\93®
\ No newline at end of file
<name>birthmark.store.target</name>
<value>MEMORY</value>
</property>
- <property>\r
- <name>override.exists.plugin</name>\r
- <value>yes</value>\r
- </property>\r
+ <property>
+ <name>override.exists.plugin</name>
+ <value>yes</value>
+ </property>
+ <property>
+ <name>update.plugins.startup</name>
+ <value>yes</value>
+ </property>
+<!--
+ If you want to use latest plugins, uncomment below property.
+ <property>
+ <name>location.hermes.config</name>
+ <value>http://stigmata.sourceforge.jp/plugins/hermes.xml</value>
+ </property>
+-->
<!--
<property>
<property-name>name</property-name>