summaryrefslogtreecommitdiff
path: root/src/de/lmu/ifi/dbs/elki/gui/multistep/panels
diff options
context:
space:
mode:
Diffstat (limited to 'src/de/lmu/ifi/dbs/elki/gui/multistep/panels')
-rw-r--r--src/de/lmu/ifi/dbs/elki/gui/multistep/panels/AlgorithmTabPanel.java38
-rw-r--r--src/de/lmu/ifi/dbs/elki/gui/multistep/panels/EvaluationTabPanel.java13
-rw-r--r--src/de/lmu/ifi/dbs/elki/gui/multistep/panels/InputTabPanel.java2
-rw-r--r--src/de/lmu/ifi/dbs/elki/gui/multistep/panels/LoggingTabPanel.java12
-rw-r--r--src/de/lmu/ifi/dbs/elki/gui/multistep/panels/OutputTabPanel.java13
-rw-r--r--src/de/lmu/ifi/dbs/elki/gui/multistep/panels/ParameterTabPanel.java36
-rw-r--r--src/de/lmu/ifi/dbs/elki/gui/multistep/panels/SavedSettingsTabPanel.java27
-rw-r--r--src/de/lmu/ifi/dbs/elki/gui/multistep/panels/package-info.java2
8 files changed, 74 insertions, 69 deletions
diff --git a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/AlgorithmTabPanel.java b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/AlgorithmTabPanel.java
index f6eb2955..d6622e8f 100644
--- a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/AlgorithmTabPanel.java
+++ b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/AlgorithmTabPanel.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.gui.multistep.panels;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -26,7 +26,6 @@ package de.lmu.ifi.dbs.elki.gui.multistep.panels;
import java.lang.ref.WeakReference;
import de.lmu.ifi.dbs.elki.database.Database;
-import de.lmu.ifi.dbs.elki.utilities.designpattern.Observer;
import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.workflow.AlgorithmStep;
@@ -36,7 +35,7 @@ import de.lmu.ifi.dbs.elki.workflow.AlgorithmStep;
*
* @author Erich Schubert
*/
-public class AlgorithmTabPanel extends ParameterTabPanel implements Observer<Object> {
+public class AlgorithmTabPanel extends ParameterTabPanel {
/**
* Serial version.
*/
@@ -65,13 +64,13 @@ public class AlgorithmTabPanel extends ParameterTabPanel implements Observer<Obj
public AlgorithmTabPanel(InputTabPanel input) {
super();
this.input = input;
- input.addObserver(this);
+ input.addPanelListener(this);
}
@Override
protected synchronized void configureStep(Parameterization config) {
algorithms = config.tryInstantiate(AlgorithmStep.class);
- if(config.getErrors().size() > 0) {
+ if (config.getErrors().size() > 0) {
algorithms = null;
}
basedOnDatabase = null;
@@ -79,10 +78,10 @@ public class AlgorithmTabPanel extends ParameterTabPanel implements Observer<Obj
@Override
protected void executeStep() {
- if(input.canRun() && !input.isComplete()) {
+ if (input.canRun() && !input.isComplete()) {
input.execute();
}
- if(!input.isComplete()) {
+ if (!input.isComplete()) {
throw new AbortException("Input data not available.");
}
// Get the database and run the algorithms
@@ -93,18 +92,17 @@ public class AlgorithmTabPanel extends ParameterTabPanel implements Observer<Obj
@Override
protected Status getStatus() {
- if(algorithms == null) {
+ if (algorithms == null) {
return Status.STATUS_UNCONFIGURED;
}
- if(!input.canRun()) {
+ if (!input.canRun()) {
return Status.STATUS_CONFIGURED;
}
checkDependencies();
- if(input.isComplete() && basedOnDatabase != null) {
- if(algorithms.getResult() == null) {
+ if (input.isComplete() && basedOnDatabase != null) {
+ if (algorithms.getResult() == null) {
return Status.STATUS_FAILED;
- }
- else {
+ } else {
return Status.STATUS_COMPLETE;
}
}
@@ -117,15 +115,15 @@ public class AlgorithmTabPanel extends ParameterTabPanel implements Observer<Obj
* @return Algorithm step
*/
public AlgorithmStep getAlgorithmStep() {
- if(algorithms == null) {
+ if (algorithms == null) {
throw new AbortException("Algorithms not configured.");
}
return algorithms;
}
@Override
- public void update(Object o) {
- if(o == input) {
+ public void panelUpdated(ParameterTabPanel o) {
+ if (o == input) {
checkDependencies();
updateStatus();
}
@@ -135,12 +133,12 @@ public class AlgorithmTabPanel extends ParameterTabPanel implements Observer<Obj
* Test if the dependencies are still valid.
*/
private void checkDependencies() {
- if(basedOnDatabase != null) {
- if(!input.isComplete() || basedOnDatabase.get() != input.getInputStep().getDatabase()) {
+ if (basedOnDatabase != null) {
+ if (!input.isComplete() || basedOnDatabase.get() != input.getInputStep().getDatabase()) {
// We've become invalidated, notify.
basedOnDatabase = null;
- observers.notifyObservers(this);
+ firePanelUpdated();
}
}
}
-} \ No newline at end of file
+}
diff --git a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/EvaluationTabPanel.java b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/EvaluationTabPanel.java
index 9a74e250..d8d4153c 100644
--- a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/EvaluationTabPanel.java
+++ b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/EvaluationTabPanel.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.gui.multistep.panels;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -27,7 +27,6 @@ import java.lang.ref.WeakReference;
import de.lmu.ifi.dbs.elki.database.Database;
import de.lmu.ifi.dbs.elki.result.HierarchicalResult;
-import de.lmu.ifi.dbs.elki.utilities.designpattern.Observer;
import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.workflow.EvaluationStep;
@@ -37,7 +36,7 @@ import de.lmu.ifi.dbs.elki.workflow.EvaluationStep;
*
* @author Erich Schubert
*/
-public class EvaluationTabPanel extends ParameterTabPanel implements Observer<Object> {
+public class EvaluationTabPanel extends ParameterTabPanel {
/**
* Serial version.
*/
@@ -72,8 +71,8 @@ public class EvaluationTabPanel extends ParameterTabPanel implements Observer<Ob
super();
this.input = input;
this.algs = algs;
- input.addObserver(this);
- algs.addObserver(this);
+ input.addPanelListener(this);
+ algs.addPanelListener(this);
}
@Override
@@ -136,7 +135,7 @@ public class EvaluationTabPanel extends ParameterTabPanel implements Observer<Ob
}
@Override
- public void update(Object o) {
+ public void panelUpdated(ParameterTabPanel o) {
if (o == input || o == algs) {
checkDependencies();
updateStatus();
@@ -151,7 +150,7 @@ public class EvaluationTabPanel extends ParameterTabPanel implements Observer<Ob
if (!input.isComplete() || !algs.isComplete() || basedOnResult.get() != algs.getAlgorithmStep().getResult()) {
// We've become invalidated, notify.
basedOnResult = null;
- observers.notifyObservers(this);
+ firePanelUpdated();
}
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/InputTabPanel.java b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/InputTabPanel.java
index 9d88e900..2f4d027b 100644
--- a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/InputTabPanel.java
+++ b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/InputTabPanel.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.gui.multistep.panels;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
diff --git a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/LoggingTabPanel.java b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/LoggingTabPanel.java
index 5bf4c086..c4933673 100644
--- a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/LoggingTabPanel.java
+++ b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/LoggingTabPanel.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.gui.multistep.panels;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -23,9 +23,10 @@ package de.lmu.ifi.dbs.elki.gui.multistep.panels;
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+import de.lmu.ifi.dbs.elki.application.AbstractApplication;
import de.lmu.ifi.dbs.elki.logging.LoggingConfiguration;
import de.lmu.ifi.dbs.elki.logging.LoggingUtil;
-import de.lmu.ifi.dbs.elki.utilities.optionhandling.OptionID;
+import de.lmu.ifi.dbs.elki.logging.Logging.Level;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.WrongParameterValueException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameters.Flag;
@@ -51,13 +52,14 @@ public class LoggingTabPanel extends ParameterTabPanel {
@Override
protected synchronized void configureStep(Parameterization config) {
- StringParameter debugParam = new StringParameter(OptionID.DEBUG);
+ StringParameter debugParam = new StringParameter(AbstractApplication.Parameterizer.DEBUG_ID);
debugParam.setOptional(true);
- Flag verboseFlag = new Flag(OptionID.VERBOSE_FLAG);
+ Flag verboseFlag = new Flag(AbstractApplication.Parameterizer.VERBOSE_ID);
// Verbose mode is a lot simpler
if (config.grab(verboseFlag) && verboseFlag.isTrue()) {
- LoggingConfiguration.setVerbose(true);
+ LoggingConfiguration.setVerbose(Level.VERBOSE);
}
+ // FIXME: add second level of verbosity!
if (config.grab(debugParam)) {
try {
LoggingUtil.parseDebugParameter(debugParam);
diff --git a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/OutputTabPanel.java b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/OutputTabPanel.java
index 48ddc344..12af18d3 100644
--- a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/OutputTabPanel.java
+++ b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/OutputTabPanel.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.gui.multistep.panels;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -26,7 +26,6 @@ package de.lmu.ifi.dbs.elki.gui.multistep.panels;
import java.lang.ref.WeakReference;
import de.lmu.ifi.dbs.elki.result.HierarchicalResult;
-import de.lmu.ifi.dbs.elki.utilities.designpattern.Observer;
import de.lmu.ifi.dbs.elki.utilities.exceptions.AbortException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.Parameterization;
import de.lmu.ifi.dbs.elki.workflow.OutputStep;
@@ -36,7 +35,7 @@ import de.lmu.ifi.dbs.elki.workflow.OutputStep;
*
* @author Erich Schubert
*/
-public class OutputTabPanel extends ParameterTabPanel implements Observer<Object> {
+public class OutputTabPanel extends ParameterTabPanel {
/**
* Serial version.
*/
@@ -71,8 +70,8 @@ public class OutputTabPanel extends ParameterTabPanel implements Observer<Object
super();
this.input = input;
this.evals = evals;
- input.addObserver(this);
- evals.addObserver(this);
+ input.addPanelListener(this);
+ evals.addPanelListener(this);
}
@Override
@@ -121,7 +120,7 @@ public class OutputTabPanel extends ParameterTabPanel implements Observer<Object
}
@Override
- public void update(Object o) {
+ public void panelUpdated(ParameterTabPanel o) {
if (o == input || o == evals) {
checkDependencies();
updateStatus();
@@ -136,7 +135,7 @@ public class OutputTabPanel extends ParameterTabPanel implements Observer<Object
if (!input.isComplete() || !evals.isComplete() || basedOnResult.get() != evals.getEvaluationStep().getResult()) {
// We've become invalidated, notify.
basedOnResult = null;
- observers.notifyObservers(this);
+ firePanelUpdated();
}
}
}
diff --git a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/ParameterTabPanel.java b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/ParameterTabPanel.java
index cb72e6cd..667960a1 100644
--- a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/ParameterTabPanel.java
+++ b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/ParameterTabPanel.java
@@ -4,7 +4,7 @@ package de.lmu.ifi.dbs.elki.gui.multistep.panels;
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -40,8 +40,6 @@ import javax.swing.event.ChangeListener;
import de.lmu.ifi.dbs.elki.gui.configurator.ConfiguratorPanel;
import de.lmu.ifi.dbs.elki.logging.Logging;
import de.lmu.ifi.dbs.elki.utilities.FormatUtil;
-import de.lmu.ifi.dbs.elki.utilities.designpattern.Observer;
-import de.lmu.ifi.dbs.elki.utilities.designpattern.Observers;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.ParameterException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.UnspecifiedParameterException;
import de.lmu.ifi.dbs.elki.utilities.optionhandling.parameterization.ListParameterization;
@@ -131,11 +129,6 @@ public abstract class ParameterTabPanel extends JPanel implements ChangeListener
private final JLabel statusText;
/**
- * Observers of this panel
- */
- protected final Observers<ParameterTabPanel> observers = new Observers<ParameterTabPanel>();
-
- /**
* Input pane
*/
public ParameterTabPanel() {
@@ -237,7 +230,7 @@ public abstract class ParameterTabPanel extends JPanel implements ChangeListener
// Update status and notify observers
updateStatus();
- observers.notifyObservers(this);
+ firePanelUpdated();
}
/**
@@ -291,7 +284,7 @@ public abstract class ParameterTabPanel extends JPanel implements ChangeListener
LOG.exception(e);
}
updateStatus();
- observers.notifyObservers(this);
+ firePanelUpdated();
}
/**
@@ -347,12 +340,18 @@ public abstract class ParameterTabPanel extends JPanel implements ChangeListener
runButton.setEnabled(canRun());
}
- public void addObserver(Observer<? super ParameterTabPanel> o) {
- observers.add(o);
+ protected void firePanelUpdated() {
+ for (ParameterTabPanel p : listenerList.getListeners(ParameterTabPanel.class)) {
+ p.panelUpdated(this);
+ }
+ }
+
+ public void addPanelListener(ParameterTabPanel o) {
+ listenerList.add(ParameterTabPanel.class, o);
}
- public void removeObserver(Observer<? super ParameterTabPanel> o) {
- observers.remove(o);
+ public void removePanelListener(ParameterTabPanel o) {
+ listenerList.remove(ParameterTabPanel.class, o);
}
@Override
@@ -362,4 +361,13 @@ public abstract class ParameterTabPanel extends JPanel implements ChangeListener
updateParameterTable();
}
}
+
+ /**
+ * Called when an observed panel changes.
+ *
+ * @param o Observed panel
+ */
+ void panelUpdated(ParameterTabPanel o) {
+ // Do nothing by default.
+ };
}
diff --git a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/SavedSettingsTabPanel.java b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/SavedSettingsTabPanel.java
index 845df73c..acebdc16 100644
--- a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/SavedSettingsTabPanel.java
+++ b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/SavedSettingsTabPanel.java
@@ -1,9 +1,10 @@
package de.lmu.ifi.dbs.elki.gui.multistep.panels;
+
/*
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
- Copyright (C) 2012
+ Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team
@@ -73,7 +74,7 @@ public class SavedSettingsTabPanel extends JPanel {
/**
* The combo box to use
*/
- JComboBox savedCombo;
+ JComboBox<String> savedCombo;
/**
* The UI to set parameters on.
@@ -96,7 +97,7 @@ public class SavedSettingsTabPanel extends JPanel {
// Dropdown for saved settings
{
savedSettingsModel = new SettingsComboboxModel(store);
- savedCombo = new JComboBox(savedSettingsModel);
+ savedCombo = new JComboBox<>(savedSettingsModel);
savedCombo.setEditable(true);
savedCombo.setSelectedItem("[Saved Settings]");
GridBagConstraints constraints = new GridBagConstraints();
@@ -111,7 +112,7 @@ public class SavedSettingsTabPanel extends JPanel {
{
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
-
+
// button to load settings
JButton loadButton = new JButton("Load");
loadButton.setMnemonic(KeyEvent.VK_L);
@@ -137,8 +138,7 @@ public class SavedSettingsTabPanel extends JPanel {
store.put(key, gui.serializeParameters());
try {
store.save();
- }
- catch(IOException e1) {
+ } catch (IOException e1) {
LOG.exception(e1);
}
savedSettingsModel.update();
@@ -155,8 +155,7 @@ public class SavedSettingsTabPanel extends JPanel {
store.remove(key);
try {
store.save();
- }
- catch(IOException e1) {
+ } catch (IOException e1) {
LOG.exception(e1);
}
savedCombo.setSelectedItem("[Saved Settings]");
@@ -164,7 +163,7 @@ public class SavedSettingsTabPanel extends JPanel {
}
});
buttonPanel.add(removeButton);
-
+
GridBagConstraints constraints = new GridBagConstraints();
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.gridx = 0;
@@ -182,7 +181,7 @@ public class SavedSettingsTabPanel extends JPanel {
*
* @apiviz.composedOf de.lmu.ifi.dbs.elki.gui.util.SavedSettingsFile
*/
- class SettingsComboboxModel extends AbstractListModel implements ComboBoxModel {
+ class SettingsComboboxModel extends AbstractListModel<String> implements ComboBoxModel<String> {
/**
* Serial version
*/
@@ -215,14 +214,14 @@ public class SavedSettingsTabPanel extends JPanel {
@Override
public void setSelectedItem(Object anItem) {
- if(anItem instanceof String) {
+ if (anItem instanceof String) {
selected = (String) anItem;
}
}
@Override
- public Object getElementAt(int index) {
- return store.getElementAt(index).first;
+ public String getElementAt(int index) {
+ return store.getElementAt(store.size() - 1 - index).first;
}
@Override
@@ -237,4 +236,4 @@ public class SavedSettingsTabPanel extends JPanel {
fireContentsChanged(this, 0, getSize() + 1);
}
}
-} \ No newline at end of file
+}
diff --git a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/package-info.java b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/package-info.java
index b9d4d90a..77d1779d 100644
--- a/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/package-info.java
+++ b/src/de/lmu/ifi/dbs/elki/gui/multistep/panels/package-info.java
@@ -5,7 +5,7 @@
This file is part of ELKI:
Environment for Developing KDD-Applications Supported by Index-Structures
-Copyright (C) 2012
+Copyright (C) 2013
Ludwig-Maximilians-Universität München
Lehr- und Forschungseinheit für Datenbanksysteme
ELKI Development Team