diff --git a/.gitignore b/.gitignore
index 42f4a1a..328f93c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
target/
*~
+deploy-*.sh
\ No newline at end of file
diff --git a/src/main/java/de/genvlin/core/data/DoubleVector.java b/src/main/java/de/genvlin/core/data/DoubleVector.java
index ce53eaa..debfc2c 100644
--- a/src/main/java/de/genvlin/core/data/DoubleVector.java
+++ b/src/main/java/de/genvlin/core/data/DoubleVector.java
@@ -17,7 +17,7 @@
*
* @author Peter Karich
*/
-class DoubleVector extends AbstractCollection implements VectorInterface {
+class DoubleVector extends AbstractCollection implements DoubleVectorInterface {
private boolean maxIsInvalid = true;
private boolean minIsInvalid = true;
diff --git a/src/main/java/de/genvlin/core/data/HistogrammInterface.java b/src/main/java/de/genvlin/core/data/HistogrammInterface.java
index 715d8b8..8708e20 100644
--- a/src/main/java/de/genvlin/core/data/HistogrammInterface.java
+++ b/src/main/java/de/genvlin/core/data/HistogrammInterface.java
@@ -13,6 +13,11 @@
*/
public interface HistogrammInterface extends VectorInterface {
+ /**
+ * @return sum of all entries
+ */
+ double getSum();
+
/**
* This method returns the root mean squared error of all added values.
* The definition is RMSError = sqrt[ sum_i_to_n((x_i - x_mean)^2) / n]
diff --git a/src/main/java/de/genvlin/core/data/HistogrammVector.java b/src/main/java/de/genvlin/core/data/HistogrammVector.java
index a76d747..90d523c 100644
--- a/src/main/java/de/genvlin/core/data/HistogrammVector.java
+++ b/src/main/java/de/genvlin/core/data/HistogrammVector.java
@@ -4,7 +4,6 @@
* Created on 21. Mai 2007, 14:13
* This stands under Public domain
*/
-
package de.genvlin.core.data;
/**
@@ -13,94 +12,108 @@
* @author Peter Karich
*/
class HistogrammVector extends DataVector implements HistogrammInterface {
-
+
/**
* Creates a new instance of HistogrammVector
*/
HistogrammVector(ID id) {
super(id, null);
}
-
+
public double getRMSError() {
int size = size();
- if(size == 0) {
+ if (size == 0) {
return 0;
}
double mean = getMean();
-
+
double result = 0;
double tmp;
Number n;
int noOfNonNullValues = size;
-
- for(int i = 0; i < size; i++) {
+
+ for (int i = 0; i < size; i++) {
n = get(i);
- if(n != null) {
+ if (n != null) {
tmp = n.doubleValue() - mean;
result += tmp * tmp;
} else {
noOfNonNullValues--;
}
}
- if(noOfNonNullValues > 0) {
- return Math.sqrt(result/noOfNonNullValues);
+ if (noOfNonNullValues > 0) {
+ return Math.sqrt(result / noOfNonNullValues);
} else {
return 0;
}
}
-
+
public double getRMS() {
int size = size();
- if(size == 0) {
+ if (size == 0) {
return 0;
}
-
+
double result = 0;
double tmp;
int noOfNonNullValues = size;
Number n;
-
- for(int i = 0; i < size; i++) {
+
+ for (int i = 0; i < size; i++) {
n = get(i);
- if(n != null) {
+ if (n != null) {
tmp = n.doubleValue();
result += tmp * tmp;
} else {
noOfNonNullValues--;
}
}
-
- if(noOfNonNullValues > 0) {
- return Math.sqrt(result/size);
+
+ if (noOfNonNullValues > 0) {
+ return Math.sqrt(result / size);
} else {
return 0;
}
}
-
+
public double getMean() {
//TODO PERFORMANCE: we can sum + substract on every add/remove call
int size = size();
- if(size == 0) {
+ if (size == 0) {
return 0;
}
-
+
double result = 0;
Number n;
int noOfNonNullValues = size;
-
- for(int i = 0; i < size; i++) {
+
+ for (int i = 0; i < size; i++) {
n = get(i);
- if(n != null) {
+ if (n != null) {
result += n.doubleValue();
} else {
- noOfNonNullValues --;
+ noOfNonNullValues--;
}
}
-
- if(noOfNonNullValues > 0) {
+
+ if (noOfNonNullValues > 0) {
return result / noOfNonNullValues;
} else {
return 0;
}
}
+
+ public double getSum() {
+ double sum = 0;
+ int size = size();
+ if (size == 0)
+ return 0;
+ Number n;
+ for (int i = 0; i < size; i++) {
+ n = get(i);
+ if (n != null)
+ sum += n.doubleValue();
+ }
+ return sum;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/de/genvlin/core/data/MainPool.java b/src/main/java/de/genvlin/core/data/MainPool.java
index c0cf84a..4f807b3 100644
--- a/src/main/java/de/genvlin/core/data/MainPool.java
+++ b/src/main/java/de/genvlin/core/data/MainPool.java
@@ -10,6 +10,8 @@
/** This is the factory of pool's, vector's and xyvector's. Or you
* specific IDData if you want implement. Get the singleton instance
* via getDefault().
+ *
+ * WARNING: not thread safe!
*
* @author Peter Karich
*/
diff --git a/src/main/java/de/genvlin/core/data/VectorInterface.java b/src/main/java/de/genvlin/core/data/VectorInterface.java
index 7f35d92..50c0af8 100644
--- a/src/main/java/de/genvlin/core/data/VectorInterface.java
+++ b/src/main/java/de/genvlin/core/data/VectorInterface.java
@@ -40,8 +40,14 @@ public interface VectorInterface extends CollectionInterface {
*/
public Number set(int i, Number n);
+ /**
+ * @return the minimal entry in this object
+ */
public Number getMin();
+ /**
+ * @return the maximal entry in this object
+ */
public Number getMax();
/**
diff --git a/src/main/java/de/genvlin/core/data/XYVector.java b/src/main/java/de/genvlin/core/data/XYVector.java
index d9f99ab..b513c84 100644
--- a/src/main/java/de/genvlin/core/data/XYVector.java
+++ b/src/main/java/de/genvlin/core/data/XYVector.java
@@ -159,6 +159,14 @@ public void removeVectorListener(CollectionListener vl) {
x.removeVectorListener(vl);
y.removeVectorListener(vl);
}
+
+ public VectorInterface getX() {
+ return x;
+ }
+
+ public VectorInterface getY() {
+ return y;
+ }
/** The Iterator on Point.Double.
*/
diff --git a/src/main/java/de/genvlin/core/data/XYVectorInterface.java b/src/main/java/de/genvlin/core/data/XYVectorInterface.java
index 3c5a394..fe71db2 100644
--- a/src/main/java/de/genvlin/core/data/XYVectorInterface.java
+++ b/src/main/java/de/genvlin/core/data/XYVectorInterface.java
@@ -54,5 +54,9 @@ public interface XYVectorInterface extends BoundedXYCollectionInterface {
public double getXDouble(int index);
- public double getYDouble(int index);
+ public double getYDouble(int index);
+
+ VectorInterface getX();
+
+ VectorInterface getY();
}
diff --git a/src/main/java/de/genvlin/gui/plot/GPlotPanel.java b/src/main/java/de/genvlin/gui/plot/GPlotPanel.java
index 6cee04d..f0ed261 100644
--- a/src/main/java/de/genvlin/gui/plot/GPlotPanel.java
+++ b/src/main/java/de/genvlin/gui/plot/GPlotPanel.java
@@ -8,7 +8,6 @@
import de.genvlin.core.data.CollectionEvent;
import de.genvlin.core.data.CollectionListener;
-import de.genvlin.core.data.ID;
import de.genvlin.core.data.MainPool;
import de.genvlin.core.data.Pool;
import de.genvlin.core.data.VectorInterface;
@@ -27,8 +26,6 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
-import java.util.logging.Level;
-import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.plaf.ColorUIResource;
@@ -250,7 +247,7 @@ protected void initXYData(XYDataInterface xyData) {
xyData.setTitle("Data:" + getPool().size());
}
int color = colorDataIndex;
- automaticOneScale(colorDataIndex);
+ // automaticOneScale(colorDataIndex);
color %= dataColor.size();
xyData.setColor(dataColor.get(color));
colorDataIndex++;
@@ -273,10 +270,9 @@ public XYDataInterface getData(String str) {
/**
* This method removes the specified plot from this plotwindow.
*/
- public void hideData(String str) {
- int i = indexOf(str);
- if (i > -1) {
- XYDataInterface xyData = (XYDataInterface) getPool().get(i);
+ public void hideData(int index) {
+ if (index > -1) {
+ XYDataInterface xyData = (XYDataInterface) getPool().get(index);
xyData.setHidden(!xyData.isHidden());
}
}
@@ -288,16 +284,6 @@ public void removeData(int i) {
getPool().remove(i);
}
- /**
- * This method removes the specified plot from this plotwindow.
- */
- public void removeData(String str) {
- int i = indexOf(str);
- if (i > -1) {
- removeData(i);
- }
- }
-
/**
* This method removes the points from a plot.
*/
@@ -344,7 +330,7 @@ public void setTranslateFactor(double xFactor, double yFactor) {
yTranslate = yFactor;
}
- protected int indexOf(String str) {
+ public int indexOf(String str) {
if (str != null) {
for (int i = 0; i < getPool().size(); i++) {
if (str.equals(getPool().get(i).getTitle())) {
@@ -355,10 +341,6 @@ protected int indexOf(String str) {
return -1;
}
- private boolean automaticScale(String subString) {
- return _automaticScale(indexOf(subString));
- }
-
/**
* This method scales the window so that we can see the specified data (in the most cases) very
* good.
@@ -544,9 +526,6 @@ public void run() {
public Component getComponent() {
return panel;
}
- private static final String automaticScalingString = "Automatic Scaling";
- private static final String removeString = "Remove";
- private static final String hideString = "Hide/Show";
private synchronized JPopupMenu getNewPopMenu() {
/*
@@ -560,45 +539,67 @@ private synchronized JPopupMenu getNewPopMenu() {
popMenu.add(comp);
}
+ popMenu.add(new AbstractAction("Autoscale all") {
+
+ public void actionPerformed(ActionEvent e) {
+ automaticScaleAll();
+ repaint();
+ }
+ });
+
for (int i = 0; i < getPool().size(); i++) {
final String str = getPool().get(i).getTitle();
JMenu menu = new JMenu(str);
menu.setForeground(getColor(i));
final int fin = i;
- menu.addMouseListener(new MouseAdapter() {
-
- @Override public void mouseEntered(MouseEvent e) {
- setPlotOne(fin);
- repaint();
- }
+// menu.addMouseListener(new MouseAdapter() {
+//
+// @Override public void mouseEntered(MouseEvent e) {
+// setPlotOne(fin);
+// repaint();
+// }
+//
+// @Override public void mouseExited(MouseEvent e) {
+// setPlotOne(-1);
+// repaint();
+// }
+// });
+
+ menu.add(new AbstractAction("Show All/Only This") {
- @Override public void mouseExited(MouseEvent e) {
- setPlotOne(-1);
+ public void actionPerformed(ActionEvent e) {
+ if (plotOne >= 0 && plotOne == fin) {
+ setPlotOne(-1);
+ automaticOneScale(SCALE_ALL);
+ } else {
+ setPlotOne(fin);
+ automaticOneScale(fin);
+ }
repaint();
}
});
- menu.add(new AbstractAction(automaticScalingString) {
+ menu.add(new AbstractAction("Hide/Show") {
public void actionPerformed(ActionEvent e) {
- automaticScale(str);
+ hideData(fin);
repaint();
}
});
- menu.add(new AbstractAction(hideString) {
+ menu.add(new AbstractAction("Automatic Scaling") {
public void actionPerformed(ActionEvent e) {
- hideData(str);
+ automaticOneScale(fin);
repaint();
}
});
- menu.add(new AbstractAction(removeString) {
+ menu.add(new AbstractAction("Remove") {
public void actionPerformed(ActionEvent e) {
- removeData(str);
+ removeData(fin);
repaint();
}
});
@@ -606,25 +607,6 @@ public void actionPerformed(ActionEvent e) {
popMenu.add(menu);
}
- //scale + remove for all datasets:
- JMenu menu = new JMenu("All");
- menu.add(new AbstractAction(automaticScalingString) {
-
- public void actionPerformed(ActionEvent e) {
- automaticScaleAll();
- repaint();
- }
- });
-
- menu.add(new AbstractAction(removeString) {
-
- public void actionPerformed(ActionEvent e) {
- clear();
- repaint();
- }
- });
-
- popMenu.add(menu);
return popMenu;
}