]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/function/DiskCacheConfig.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / tim / prune / function / DiskCacheConfig.java
diff --git a/tim/prune/function/DiskCacheConfig.java b/tim/prune/function/DiskCacheConfig.java
deleted file mode 100644 (file)
index 915bed1..0000000
+++ /dev/null
@@ -1,249 +0,0 @@
-package tim.prune.function;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.FlowLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.KeyAdapter;
-import java.awt.event.KeyEvent;
-import java.io.File;
-
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JDialog;
-import javax.swing.JFileChooser;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-
-import tim.prune.App;
-import tim.prune.DataSubscriber;
-import tim.prune.GenericFunction;
-import tim.prune.I18nManager;
-import tim.prune.UpdateMessageBroker;
-import tim.prune.config.Config;
-import tim.prune.function.cache.ManageCacheFunction;
-
-/**
- * Class to show the popup window for setting the path to disk cache
- */
-public class DiskCacheConfig extends GenericFunction
-{
-       private JDialog _dialog = null;
-       private JCheckBox _cacheCheckbox = null;
-       private JTextField _cacheDirBox = null;
-       private JButton _browseButton = null;
-       private JButton _okButton = null, _manageButton = null;
-       private boolean _initialCheckState = false;
-       private String _initialCacheDir = null;
-
-       /**
-        * Constructor
-        * @param inApp app object
-        */
-       public DiskCacheConfig(App inApp)
-       {
-               super(inApp);
-       }
-
-       /**
-        * Return the name key for this function
-        */
-       public String getNameKey()
-       {
-               return "function.diskcache";
-       }
-
-       /**
-        * @return the contents of the window as a Component
-        */
-       private Component makeContents()
-       {
-               JPanel dialogPanel = new JPanel();
-               dialogPanel.setLayout(new BorderLayout(0, 5));
-               // top panel
-               JPanel topPanel = new JPanel();
-               _cacheCheckbox = new JCheckBox(I18nManager.getText("dialog.diskcache.save"));
-               _cacheCheckbox.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent arg0) {
-                               enableButtons();
-                       }
-               });
-               topPanel.add(_cacheCheckbox);
-               dialogPanel.add(topPanel, BorderLayout.NORTH);
-               // dir panel
-               JPanel dirPanel = new JPanel();
-               dirPanel.setLayout(new BorderLayout());
-               dirPanel.add(new JLabel(I18nManager.getText("dialog.diskcache.dir") + " : "), BorderLayout.WEST);
-               _cacheDirBox = new JTextField(24);
-               _cacheDirBox.addKeyListener(new KeyAdapter() {
-                       public void keyReleased(KeyEvent arg0) {
-                               super.keyReleased(arg0);
-                               enableButtons();
-                       }
-               });
-               dirPanel.add(_cacheDirBox, BorderLayout.CENTER);
-               _browseButton = new JButton(I18nManager.getText("button.browse"));
-               _browseButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent arg0) {
-                               chooseDir();
-                       }
-               });
-               dirPanel.add(_browseButton, BorderLayout.EAST);
-               // holder panel so it doesn't expand vertically
-               JPanel dirHolderPanel = new JPanel();
-               dirHolderPanel.setLayout(new BorderLayout());
-               dirHolderPanel.add(dirPanel, BorderLayout.NORTH);
-               dialogPanel.add(dirHolderPanel, BorderLayout.CENTER);
-
-               // OK, Cancel buttons at the bottom right
-               JPanel buttonPanelr = new JPanel();
-               buttonPanelr.setLayout(new FlowLayout(FlowLayout.RIGHT));
-               _okButton = new JButton(I18nManager.getText("button.ok"));
-               _okButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e)
-                       {
-                               finish();
-                               _dialog.dispose();
-                       }
-               });
-               buttonPanelr.add(_okButton);
-               JButton cancelButton = new JButton(I18nManager.getText("button.cancel"));
-               cancelButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e)
-                       {
-                               _dialog.dispose();
-                       }
-               });
-               buttonPanelr.add(cancelButton);
-
-               // Manage button at the bottom left
-               JPanel buttonPanell = new JPanel();
-               buttonPanell.setLayout(new FlowLayout(FlowLayout.LEFT));
-               _manageButton = new JButton(I18nManager.getText("button.manage"));
-               _manageButton.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e)
-                       {
-                               finish();
-                               new ManageCacheFunction(_app).begin();
-                       }
-               });
-               buttonPanell.add(_manageButton);
-               // Put them together
-               JPanel buttonPanel = new JPanel();
-               buttonPanel.setLayout(new BorderLayout());
-               buttonPanel.add(buttonPanelr, BorderLayout.EAST);
-               buttonPanel.add(buttonPanell, BorderLayout.WEST);
-               dialogPanel.add(buttonPanel, BorderLayout.SOUTH);
-               return dialogPanel;
-       }
-
-       /**
-        * Enable or disable the buttons according to what's changed
-        */
-       private void enableButtons()
-       {
-               final boolean checkState = _cacheCheckbox.isSelected();
-               final String path = _cacheDirBox.getText();
-               _cacheDirBox.setEditable(checkState);
-               _browseButton.setEnabled(checkState);
-               boolean ok = false;
-               // If checkbox has stayed off then disable ok
-               if (!_initialCheckState && !checkState) {ok = false;}
-               else {
-                       // If checkbox has been switched off then enable
-                       if (!checkState) {ok = true;}
-                       else
-                       {
-                               // checkbox is on, check value
-                               if (path.equals("") || (_initialCacheDir != null && path.equals(_initialCacheDir))) {
-                                       // Value blank or same as before
-                                       ok = false;
-                               }
-                               else {
-                                       ok = true;
-                               }
-                       }
-               }
-               _okButton.setEnabled(ok);
-               // Manage button needs a valid cache
-               boolean cacheDirGood = false;
-               if (checkState && !path.equals(""))
-               {
-                       File dir = new File(path);
-                       cacheDirGood = dir.exists() && dir.canRead() && dir.isDirectory();
-               }
-               _manageButton.setEnabled(cacheDirGood);
-       }
-
-       /**
-        * Show window
-        */
-       public void begin()
-       {
-               if (_dialog == null)
-               {
-                       _dialog = new JDialog(_parentFrame, I18nManager.getText(getNameKey()));
-                       _dialog.setLocationRelativeTo(_parentFrame);
-                       _dialog.getContentPane().add(makeContents());
-                       _dialog.pack();
-               }
-               // Set controls according to current config
-               String currPath = Config.getConfigString(Config.KEY_DISK_CACHE);
-               _cacheCheckbox.setSelected(currPath != null);
-               _cacheDirBox.setText(currPath==null?"":currPath);
-               enableButtons();
-               // Remember current state
-               _initialCheckState = _cacheCheckbox.isSelected();
-               _dialog.setVisible(true);
-       }
-
-       /**
-        * Function activated by the "Browse..." button to select a directory for the cache
-        */
-       private void chooseDir()
-       {
-               JFileChooser chooser = new JFileChooser();
-               chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
-               // Set start path from currently selected dir
-               String path = _cacheDirBox.getText();
-               if (path.length() > 1) {chooser.setCurrentDirectory(new File(path));}
-               if (chooser.showOpenDialog(_parentFrame) == JFileChooser.APPROVE_OPTION)
-               {
-                       _cacheDirBox.setText(chooser.getSelectedFile().getAbsolutePath());
-               }
-               enableButtons();
-       }
-
-       /**
-        * OK pressed, save selected settings in Config
-        */
-       private void finish()
-       {
-               String cachePath = (_cacheCheckbox.isSelected()?_cacheDirBox.getText():null);
-               // Create dir if it doesn't exist already and creation confirmed
-               if (cachePath != null)
-               {
-                       File cacheDir = new File(cachePath);
-                       if ((!cacheDir.exists() || !cacheDir.isDirectory()) && (JOptionPane.showConfirmDialog(_dialog,
-                               I18nManager.getText("dialog.diskcache.createdir") + ": " + cacheDir.getAbsolutePath() + " ?",
-                               I18nManager.getText(getNameKey()), JOptionPane.OK_CANCEL_OPTION) == JOptionPane.CANCEL_OPTION || !cacheDir.mkdir()))
-                       {
-                               JOptionPane.showMessageDialog(_dialog, I18nManager.getText("dialog.diskcache.nocreate"),
-                                       I18nManager.getText(getNameKey()), JOptionPane.WARNING_MESSAGE);
-                               return;
-                       }
-                       // Check that the cache path is writable too, and give warning if not
-                       if (cacheDir.exists() && cacheDir.isDirectory() && !cacheDir.canWrite())
-                       {
-                               JOptionPane.showMessageDialog(_dialog, I18nManager.getText("dialog.diskcache.cannotwrite"),
-                                       I18nManager.getText(getNameKey()), JOptionPane.WARNING_MESSAGE);
-                       }
-               }
-               Config.setConfigString(Config.KEY_DISK_CACHE, cachePath);
-               // inform subscribers so that tiles are wiped from memory and refetched
-               UpdateMessageBroker.informSubscribers(DataSubscriber.MAPSERVER_CHANGED);
-       }
-}