package open.dolphin.impl.img; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.Properties; import java.util.ResourceBundle; import javax.swing.*; import open.dolphin.client.ClientContext; import open.dolphin.client.GUIFactory; /** * * @author Kazushi Minagawa. Digital Globe, Inc. */ public class DefaultSetting { private final AbstractBrowser context; private final Component parent; private DefaultConfigView view; private JDialog dialog; private final Properties properties; public DefaultSetting(AbstractBrowser context, Component parent) { this.context = context; this.parent = parent; this.properties = context.properties; } private ActionMap getAction(ResourceBundle resource) { ActionMap ret = new ActionMap(); String text = resource.getString("setBaseDirectory.Action.text"); AbstractAction setBaseDirectory = new AbstractAction(text) { @Override public void actionPerformed(ActionEvent ae) { JFileChooser chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); int returnVal = chooser.showOpenDialog(null); if (returnVal == JFileChooser.APPROVE_OPTION) { String dir = chooser.getSelectedFile().getPath(); view.getBaseDirFld().setText(dir); } } }; ret.put("setBaseDirectory", setBaseDirectory); text = resource.getString("saveProperties.Action.text"); AbstractAction saveProperties = new AbstractAction(text) { @Override public void actionPerformed(ActionEvent ae) { // BaseDir setProperty(DefaultBrowser.PROP_BASE_DIR, view.getBaseDirFld()); // Drop動作 String dropAction = view.getCopyRadio().isSelected() ? "copy" : "move"; properties.setProperty(AbstractBrowser.PROP_DROP_ACTION, dropAction); // カラム数 String spiVal = view.getColumnSpinner().getValue().toString(); properties.setProperty(AbstractBrowser.PROP_COLUMN_COUNT, spiVal); // ソート属性 String sortAttr = view.getFilenameRadio().isSelected() ? "filename" : "lastModified"; properties.setProperty(AbstractBrowser.PROP_SORT_ATTR, sortAttr); // ソート順 String sortOrder = view.getAscRadio().isSelected() ? "asc" : "desc"; properties.setProperty(AbstractBrowser.PROP_SORT_ORDER, sortOrder); dialog.setVisible(false); dialog.dispose(); } }; ret.put("saveProperties", saveProperties); text = resource.getString("cancel.Action.text"); AbstractAction cancel = new AbstractAction(text) { @Override public void actionPerformed(ActionEvent ae) { dialog.setVisible(false); dialog.dispose(); } }; ret.put("cancel", cancel); return ret; } public void start() { view = new DefaultConfigView(); // Base directory String baseDir = properties.getProperty(DefaultBrowser.PROP_BASE_DIR); view.getBaseDirFld().setText(baseDir); // Drop action boolean move = context.dropIsMove(); view.getCopyRadio().setSelected(!move); view.getMoveRadio().setSelected(move); // カラム数 int spiInt = context.columnCount(); view.getColumnSpinner().setValue(spiInt); // ソート属性 boolean last = context.sortIsLastModified(); view.getFilenameRadio().setSelected(!last); view.getLastRadio().setSelected(last); // ソート順 boolean desc = context.sortIsDescending(); view.getAscRadio().setSelected(!desc); view.getDescRadio().setSelected(desc); // Button group ButtonGroup actionRgp = new ButtonGroup(); actionRgp.add(view.getCopyRadio()); actionRgp.add(view.getMoveRadio()); ButtonGroup attrRgp = new ButtonGroup(); attrRgp.add(view.getFilenameRadio()); attrRgp.add(view.getLastRadio()); ButtonGroup orderRgp = new ButtonGroup(); orderRgp.add(view.getAscRadio()); orderRgp.add(view.getDescRadio()); // Inject Actions ResourceBundle resource = ClientContext.getMyBundle(DefaultSetting.class); ActionMap map = getAction(resource); view.getBaseDirBtn().setAction(map.get("setBaseDirectory")); JButton saveBtn = new JButton(); saveBtn.setAction(map.get("saveProperties")); JButton cancelBtn = new JButton(); cancelBtn.setAction(map.get("cancel")); cancelBtn.setText(GUIFactory.getCancelButtonText()); Object[] options = new Object[]{saveBtn, cancelBtn}; JOptionPane jop = new JOptionPane( view, JOptionPane.PLAIN_MESSAGE, JOptionPane.DEFAULT_OPTION, null, options, saveBtn); String title = ClientContext.getMyBundle(DefaultSetting.class).getString("title.imageBrowser.setting"); dialog = jop.createDialog(parent, ClientContext.getFrameTitle(title)); dialog.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { dialog.setVisible(false); dialog.dispose(); } }); dialog.setVisible(true); } private void setProperty(String name, JTextField tf) { String value = tf.getText().trim(); if (!value.equals("")) { properties.setProperty(name, value); } else if (properties.containsKey(name)) { properties.remove(name); } } }