This commit is contained in:
Andreas Dräger 2010-04-08 07:13:40 +00:00
parent df9c625771
commit e49b0e1a16

View File

@ -29,8 +29,6 @@ import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import javax.swing.JComponent;
import javax.swing.JFileChooser; import javax.swing.JFileChooser;
import javax.swing.JMenuItem; import javax.swing.JMenuItem;
import javax.swing.JPopupMenu; import javax.swing.JPopupMenu;
@ -49,7 +47,6 @@ import eva2.tools.chart2d.DPointIcon;
import eva2.tools.chart2d.DPointSet; import eva2.tools.chart2d.DPointSet;
import eva2.tools.chart2d.ScaledBorder; import eva2.tools.chart2d.ScaledBorder;
/*==========================================================================* /*==========================================================================*
* CLASS DECLARATION * CLASS DECLARATION
*==========================================================================*/ *==========================================================================*/
@ -57,6 +54,10 @@ import eva2.tools.chart2d.ScaledBorder;
* *
*/ */
public class FunctionArea extends DArea implements Serializable { public class FunctionArea extends DArea implements Serializable {
/**
* Generated serial version identifier.
*/
private static final long serialVersionUID = 1238444548498667204L;
private InterfaceRefPointListener m_RefPointListener; private InterfaceRefPointListener m_RefPointListener;
private JFileChooser m_FileChooser; private JFileChooser m_FileChooser;
private ArrayList<GraphPointSet> m_PointSetContainer; private ArrayList<GraphPointSet> m_PointSetContainer;
@ -70,10 +71,12 @@ public class FunctionArea extends DArea implements Serializable {
private GraphPointSetLegend legendBox = null; private GraphPointSetLegend legendBox = null;
private DPointIcon m_CurrentPointIcon; private DPointIcon m_CurrentPointIcon;
/** /**
* *
*/ */
public FunctionArea() {} public FunctionArea() {
}
/** /**
* *
@ -100,18 +103,20 @@ public class FunctionArea extends DArea implements Serializable {
} }
/** /**
* Set a legend for the function area. If null is given, the former legend is deactivated. * Set a legend for the function area. If null is given, the former legend
* is deactivated.
* *
* @param lBox * @param lBox
*/ */
protected void setLegend(GraphPointSetLegend lBox) { protected void setLegend(GraphPointSetLegend lBox) {
legendBox = lBox; legendBox = lBox;
if (lBox!=null && m_legend) repaint(); if (lBox != null && m_legend)
repaint();
} }
/** /**
* Plot a circle icon to the function area which is annotated with a char and * Plot a circle icon to the function area which is annotated with a char
* a double value. * and a double value.
* *
* @param c * @param c
* @param val * @param val
@ -122,8 +127,8 @@ public class FunctionArea extends DArea implements Serializable {
} }
/** /**
* Plot a circle icon to the function area which is annotated with a char and * Plot a circle icon to the function area which is annotated with a char
* a double value. * and a double value.
* *
* @param c * @param c
* @param val * @param val
@ -142,8 +147,9 @@ public class FunctionArea extends DArea implements Serializable {
} }
/** /**
* Plot a circle icon to the function area which is annotated with a char and * Plot a circle icon to the function area which is annotated with a char
* a double value. The color corresponds to the color of the graph with given ID * and a double value. The color corresponds to the color of the graph with
* given ID
* *
* @param label * @param label
* @param position * @param position
@ -154,21 +160,28 @@ public class FunctionArea extends DArea implements Serializable {
} }
/** /**
* Plot an icon to the function area which is annotated with a char and * Plot an icon to the function area which is annotated with a char and a
* a double value. The color corresponds to the color of the graph with given ID * double value. The color corresponds to the color of the graph with given
* Icon types are 0: circle, 1: cross, otherwise: point. * ID Icon types are 0: circle, 1: cross, otherwise: point.
* *
* @param label * @param label
* @param position * @param position
* @param graphID * @param graphID
*/ */
public void drawIcon(int iconType, String label, double[] position, int graphID) { public void drawIcon(int iconType, String label, double[] position,
int graphID) {
DPointIcon theIcon; DPointIcon theIcon;
switch (iconType) { switch (iconType) {
case 0: theIcon = new Chart2DDPointIconCircle(); break; case 0:
case 1: theIcon = new Chart2DDPointIconCross(); break; theIcon = new Chart2DDPointIconCircle();
break;
case 1:
theIcon = new Chart2DDPointIconCross();
break;
default: default:
case 2: theIcon = new Chart2DDPointIconPoint(); break; case 2:
theIcon = new Chart2DDPointIconPoint();
break;
} }
drawIcon(theIcon, label, position, graphID); drawIcon(theIcon, label, position, graphID);
} }
@ -188,20 +201,23 @@ public class FunctionArea extends DArea implements Serializable {
} }
/** /**
* Plot a circle icon to the function area which is annotated with a char and * Plot a circle icon to the function area which is annotated with a char
* a double value. The color corresponds to the color of the graph with given ID * and a double value. The color corresponds to the color of the graph with
* given ID
* *
* @param label * @param label
* @param position * @param position
* @param graphID * @param graphID
*/ */
public void drawIcon(DPointIcon theIcon, String label, double[] position, int graphID) { public void drawIcon(DPointIcon theIcon, String label, double[] position,
int graphID) {
DPointSet popRep; DPointSet popRep;
popRep = new DPointSet(); popRep = new DPointSet();
popRep.addDPoint(new DPoint(position[0], position[1])); popRep.addDPoint(new DPoint(position[0], position[1]));
DPointIcon icon = new Chart2DDPointIconText(label); DPointIcon icon = new Chart2DDPointIconText(label);
((Chart2DDPointIconText) icon).setIcon(theIcon); ((Chart2DDPointIconText) icon).setIcon(theIcon);
((Chart2DDPointIconText)icon).setColor(getGraphPointSet(graphID).getColor()); ((Chart2DDPointIconText) icon).setColor(getGraphPointSet(graphID)
.getColor());
popRep.setIcon(icon); popRep.setIcon(icon);
addDElement(popRep); addDElement(popRep);
} }
@ -214,8 +230,11 @@ public class FunctionArea extends DArea implements Serializable {
if ((m_PointSetContainer == null) || (m_PointSetContainer.size() == 0)) if ((m_PointSetContainer == null) || (m_PointSetContainer.size() == 0))
return ret; return ret;
int minindex = getNearestGraphIndex(x, y); int minindex = getNearestGraphIndex(x, y);
if (minindex>=0) return ((GraphPointSet) (m_PointSetContainer.get(minindex))).getInfoString(); if (minindex >= 0)
else return "none"; return ((GraphPointSet) (m_PointSetContainer.get(minindex)))
.getInfoString();
else
return "none";
} }
/** /**
@ -226,7 +245,8 @@ public class FunctionArea extends DArea implements Serializable {
if ((m_PointSetContainer == null) || (m_PointSetContainer.size() == 0)) if ((m_PointSetContainer == null) || (m_PointSetContainer.size() == 0))
return ret; return ret;
int minindex = getNearestGraphIndex(x, y); int minindex = getNearestGraphIndex(x, y);
ret = ((GraphPointSet) (m_PointSetContainer.get(minindex))).isStatisticsGraph(); ret = ((GraphPointSet) (m_PointSetContainer.get(minindex)))
.isStatisticsGraph();
return ret; return ret;
} }
@ -248,7 +268,8 @@ public class FunctionArea extends DArea implements Serializable {
if (point1 == null) if (point1 == null)
System.err.println("point1 == null"); System.err.println("point1 == null");
dist = (point1.x - point2.x) * (point1.x - point2.x) + (point1.y - point2.y) * (point1.y - point2.y); dist = (point1.x - point2.x) * (point1.x - point2.x)
+ (point1.y - point2.y) * (point1.y - point2.y);
// System.out.println("dist="+dist+"i="+i); // System.out.println("dist="+dist+"i="+i);
if (dist < distmin) { if (dist < distmin) {
distmin = dist; distmin = dist;
@ -270,17 +291,21 @@ public class FunctionArea extends DArea implements Serializable {
double dist = 0; double dist = 0;
for (int i = 0; i < m_PointSetContainer.size(); i++) { for (int i = 0; i < m_PointSetContainer.size(); i++) {
if (m_PointSetContainer.get(i) instanceof GraphPointSet) { if (m_PointSetContainer.get(i) instanceof GraphPointSet) {
GraphPointSet pointset = (GraphPointSet) (m_PointSetContainer.get(i)); GraphPointSet pointset = (GraphPointSet) (m_PointSetContainer
.get(i));
point2 = pointset.getNearestDPoint(point1); point2 = pointset.getNearestDPoint(point1);
if (point2 == null) if (point2 == null)
continue; continue;
dist = (point1.x - point2.x) * (point1.x - point2.x) + (point1.y - point2.y) * (point1.y - point2.y); dist = (point1.x - point2.x) * (point1.x - point2.x)
+ (point1.y - point2.y) * (point1.y - point2.y);
// System.out.println("dist="+dist+"i="+i); // System.out.println("dist="+dist+"i="+i);
if (dist < distmin) { if (dist < distmin) {
distmin = dist; distmin = dist;
ret = point2; ret = point2;
} }
if ((dist == distmin) && !(ret.getIcon()instanceof Chart2DDPointIconContent) && !(ret.getIcon()instanceof InterfaceSelectablePointIcon)) { if ((dist == distmin)
&& !(ret.getIcon() instanceof Chart2DDPointIconContent)
&& !(ret.getIcon() instanceof InterfaceSelectablePointIcon)) {
distmin = dist; distmin = dist;
ret = point2; ret = point2;
} }
@ -302,10 +327,11 @@ public class FunctionArea extends DArea implements Serializable {
} }
/** /**
* Export contained data to a file or to standard out if null is given. * Export contained data to a file or to standard out if null is given. The
* The given File will be overwritten! * given File will be overwritten!
* *
* @param file a File instance or null to export to standard out * @param file
* a File instance or null to export to standard out
* @return true if the export succeeded, else false * @return true if the export succeeded, else false
*/ */
public boolean exportToAscii(File file) { public boolean exportToAscii(File file) {
@ -319,10 +345,12 @@ public class FunctionArea extends DArea implements Serializable {
maxSize = maxSet.getSize(); maxSize = maxSet.getSize();
} }
} }
if (maxSize > 0) { // if there is any data, init string array and set x value column if (maxSize > 0) { // if there is any data, init string array and set x
// value column
s = new String[maxSize + 1]; s = new String[maxSize + 1];
s[0] = "calls"; s[0] = "calls";
for (int j = 1; j <= maxSize; j++) s[j] = "" + maxSet.getDPoint(j-1).x; for (int j = 1; j <= maxSize; j++)
s[j] = "" + maxSet.getDPoint(j - 1).x;
} else { } else {
System.err.println("Error: no data to export"); System.err.println("Error: no data to export");
return true; return true;
@ -331,21 +359,30 @@ public class FunctionArea extends DArea implements Serializable {
if (m_PointSetContainer.get(i) instanceof GraphPointSet) { if (m_PointSetContainer.get(i) instanceof GraphPointSet) {
GraphPointSet set = (GraphPointSet) m_PointSetContainer.get(i); GraphPointSet set = (GraphPointSet) m_PointSetContainer.get(i);
DPointSet pset = set.getConnectedPointSet(); DPointSet pset = set.getConnectedPointSet();
s[0] = s[0] + " " + cleanBlanks(set.getInfoString(), '_'); // add column name s[0] = s[0] + " " + cleanBlanks(set.getInfoString(), '_'); // add
for (int j = 1; j < s.length; j++) { // add column data of place holder if no value in this set // column
if ((j-1) < pset.getSize()) s[j] = s[j] + " " + pset.getDPoint(j - 1).y; // name
else s[j] += " #"; for (int j = 1; j < s.length; j++) { // add column data of place
// holder if no value in
// this set
if ((j - 1) < pset.getSize())
s[j] = s[j] + " " + pset.getDPoint(j - 1).y;
else
s[j] += " #";
} }
} else System.err.println("error in FunctionArea::exportToAscii"); } else
System.err.println("error in FunctionArea::exportToAscii");
} }
if (file == null) { if (file == null) {
for (int j = 0; j < s.length; j++) { for (int j = 0; j < s.length; j++) {
System.out.println(s[j]); System.out.println(s[j]);
} }
return true; return true;
} else try { } else
try {
PrintWriter out = new PrintWriter(new FileOutputStream(file)); PrintWriter out = new PrintWriter(new FileOutputStream(file));
for (int j = 0; j < s.length; j++) out.println(s[j]); for (int j = 0; j < s.length; j++)
out.println(s[j]);
out.flush(); out.flush();
out.close(); out.close();
return true; return true;
@ -358,12 +395,15 @@ public class FunctionArea extends DArea implements Serializable {
/** /**
* Export contained data to a file with a given String as prefix * Export contained data to a file with a given String as prefix
* *
* @param prefix file name prefix * @param prefix
* file name prefix
* @return true if the export succeeded, else false * @return true if the export succeeded, else false
*/ */
public boolean exportToAscii(String prefix) { public boolean exportToAscii(String prefix) {
SimpleDateFormat formatter = new SimpleDateFormat("E'_'yyyy.MM.dd'_'HH.mm.ss"); SimpleDateFormat formatter = new SimpleDateFormat(
String fname = prefix+"PlotExport_"+formatter.format(new Date())+".txt"; "E'_'yyyy.MM.dd'_'HH.mm.ss");
String fname = prefix + "PlotExport_" + formatter.format(new Date())
+ ".txt";
try { try {
File f = new File(fname); File f = new File(fname);
f.createNewFile(); f.createNewFile();
@ -378,7 +418,8 @@ public class FunctionArea extends DArea implements Serializable {
@Override @Override
public void paint(Graphics g) { public void paint(Graphics g) {
super.paint(g); super.paint(g);
if (legendBox!=null && (m_legend)) legendBox.paintIn(g, m_Border.getInnerRect(this)); if (legendBox != null && (m_legend))
legendBox.paintIn(g, m_Border.getInnerRect(this));
} }
/** /**
@ -393,12 +434,14 @@ public class FunctionArea extends DArea implements Serializable {
*/ */
public void setConnectedPoint(double x, double y, int graphLabel) { public void setConnectedPoint(double x, double y, int graphLabel) {
if (!checkLogValidYValue(x, y, graphLabel)) { if (!checkLogValidYValue(x, y, graphLabel)) {
if (m_log) toggleLog(); if (m_log)
toggleLog();
} }
// if (y <= 0.0) { // if (y <= 0.0) {
// // y = Double.MIN_VALUE; // // y = Double.MIN_VALUE;
// if (notifyNegLog) { // if (notifyNegLog) {
// System.err.println("Warning: trying to plot value (" + x + "/" + y + ") with y <= 0 in logarithmic mode! Setting y to " + 1e-30); // System.err.println("Warning: trying to plot value (" + x + "/" + y +
// ") with y <= 0 in logarithmic mode! Setting y to " + 1e-30);
// notifyNegLog = false; // notifyNegLog = false;
// } // }
// y = 1e-30; // y = 1e-30;
@ -410,7 +453,8 @@ public class FunctionArea extends DArea implements Serializable {
// if (m_log == true && y <= 0.0) { // if (m_log == true && y <= 0.0) {
// // y = Double.MIN_VALUE; // // y = Double.MIN_VALUE;
// if (notifyNegLog) { // if (notifyNegLog) {
// System.err.println("Warning: trying to plot value (" + x + "/" + y + ") with y <= 0 in logarithmic mode! Setting y to " + 1e-30); // System.err.println("Warning: trying to plot value (" + x + "/" + y +
// ") with y <= 0 in logarithmic mode! Setting y to " + 1e-30);
// notifyNegLog = false; // notifyNegLog = false;
// } // }
// y = 1e-30; // y = 1e-30;
@ -423,12 +467,12 @@ public class FunctionArea extends DArea implements Serializable {
this.m_PointSetContainer.add(d); this.m_PointSetContainer.add(d);
} }
/** /**
* *
*/ */
public void addGraph(int GraphLabel_1, int GraphLabel_2, boolean forceAdd) { public void addGraph(int GraphLabel_1, int GraphLabel_2, boolean forceAdd) {
getGraphPointSet(GraphLabel_1).addGraph(getGraphPointSet(GraphLabel_2), this.getDMeasures(), forceAdd); getGraphPointSet(GraphLabel_1).addGraph(getGraphPointSet(GraphLabel_2),
this.getDMeasures(), forceAdd);
notifyNegLog = true; notifyNegLog = true;
} }
@ -457,7 +501,8 @@ public class FunctionArea extends DArea implements Serializable {
int index = getNearestGraphIndex(x, y); int index = getNearestGraphIndex(x, y);
if (index == -1) if (index == -1)
return; return;
int GraphLabel = ((GraphPointSet) (this.m_PointSetContainer.get(index))).getGraphLabel(); int GraphLabel = ((GraphPointSet) (this.m_PointSetContainer.get(index)))
.getGraphLabel();
clearGraph(GraphLabel); clearGraph(GraphLabel);
updateLegend(); updateLegend();
} }
@ -469,7 +514,8 @@ public class FunctionArea extends DArea implements Serializable {
int index = getNearestGraphIndex(x, y); int index = getNearestGraphIndex(x, y);
if (index == -1) if (index == -1)
return; return;
int GraphLabel = ((GraphPointSet) (this.m_PointSetContainer.get(index))).getGraphLabel(); int GraphLabel = ((GraphPointSet) (this.m_PointSetContainer.get(index)))
.getGraphLabel();
changeColorGraph(GraphLabel); changeColorGraph(GraphLabel);
updateLegend(); updateLegend();
} }
@ -482,7 +528,8 @@ public class FunctionArea extends DArea implements Serializable {
int index = getNearestGraphIndex(x, y); int index = getNearestGraphIndex(x, y);
if (index == -1 || point == null) if (index == -1 || point == null)
return; return;
GraphPointSet pointset = (GraphPointSet) (this.m_PointSetContainer.get(index)); GraphPointSet pointset = (GraphPointSet) (this.m_PointSetContainer
.get(index));
pointset.removePoint(point); pointset.removePoint(point);
} }
@ -508,7 +555,8 @@ public class FunctionArea extends DArea implements Serializable {
* *
*/ */
private GraphPointSet getGraphPointSet(int GraphLabel) { private GraphPointSet getGraphPointSet(int GraphLabel) {
// System.out.println("looping through " + m_PointSetContainer.size() + " point sets..."); // System.out.println("looping through " + m_PointSetContainer.size() +
// " point sets...");
for (int i = 0; i < m_PointSetContainer.size(); i++) { for (int i = 0; i < m_PointSetContainer.size(); i++) {
if (m_PointSetContainer.get(i) instanceof GraphPointSet) { if (m_PointSetContainer.get(i) instanceof GraphPointSet) {
GraphPointSet xx = (GraphPointSet) (m_PointSetContainer.get(i)); GraphPointSet xx = (GraphPointSet) (m_PointSetContainer.get(i));
@ -530,12 +578,14 @@ public class FunctionArea extends DArea implements Serializable {
public void setUnconnectedPoint(double[] p, int GraphLabel) { public void setUnconnectedPoint(double[] p, int GraphLabel) {
setUnconnectedPoint(p[0], p[1], GraphLabel); setUnconnectedPoint(p[0], p[1], GraphLabel);
} }
/** /**
* *
*/ */
public void setUnconnectedPoint(double x, double y, int GraphLabel) { public void setUnconnectedPoint(double x, double y, int GraphLabel) {
if (!checkLogValidYValue(x, y, GraphLabel)) { if (!checkLogValidYValue(x, y, GraphLabel)) {
if (m_log) toggleLog(); if (m_log)
toggleLog();
} }
this.getGraphPointSet(GraphLabel).addDPoint(x, y); this.getGraphPointSet(GraphLabel).addDPoint(x, y);
this.getGraphPointSet(GraphLabel).setConnectedMode(false); this.getGraphPointSet(GraphLabel).setConnectedMode(false);
@ -546,7 +596,8 @@ public class FunctionArea extends DArea implements Serializable {
double minY = Double.MAX_VALUE; double minY = Double.MAX_VALUE;
for (int i = 0; i < m_PointSetContainer.size(); i++) { for (int i = 0; i < m_PointSetContainer.size(); i++) {
DPointSet pSet = (m_PointSetContainer.get(i).getConnectedPointSet()); DPointSet pSet = (m_PointSetContainer.get(i).getConnectedPointSet());
if (pSet.getSize() > 0) minY = Math.min(minY, pSet.getMinYVal()); if (pSet.getSize() > 0)
minY = Math.min(minY, pSet.getMinYVal());
} }
// if (TRACE) System.out.println("min is " + minY); // if (TRACE) System.out.println("min is " + minY);
return (minY > 0); return (minY > 0);
@ -555,7 +606,8 @@ public class FunctionArea extends DArea implements Serializable {
protected boolean checkLogValidYValue(double x, double y, int graphLabel) { protected boolean checkLogValidYValue(double x, double y, int graphLabel) {
if (y <= 0.0) { if (y <= 0.0) {
if (m_log && notifyNegLog) { if (m_log && notifyNegLog) {
System.err.println("Warning: trying to plot value (" + x + "/" + y + ") with y <= 0 in logarithmic mode!" ); System.err.println("Warning: trying to plot value (" + x + "/"
+ y + ") with y <= 0 in logarithmic mode!");
notifyNegLog = false; notifyNegLog = false;
} }
return false; return false;
@ -629,7 +681,8 @@ public class FunctionArea extends DArea implements Serializable {
setYScale(null); setYScale(null);
ScaledBorder buffer = m_Border; ScaledBorder buffer = m_Border;
m_Border = new ScaledBorder(); m_Border = new ScaledBorder();
m_Border.x_label = buffer.x_label; //"App. " + Name + " func. calls"; m_Border.x_label = buffer.x_label; // "App. " + Name +
// " func. calls";
m_Border.y_label = buffer.y_label; // "fitness"; m_Border.y_label = buffer.y_label; // "fitness";
setBorder(m_Border); setBorder(m_Border);
} }
@ -637,8 +690,8 @@ public class FunctionArea extends DArea implements Serializable {
} }
/** /**
* Causes all PointSets to interupt the connected painting at the * Causes all PointSets to interupt the connected painting at the current
* current position. * position.
*/ */
public void jump() { public void jump() {
for (int i = 0; i < m_PointSetContainer.size(); i++) for (int i = 0; i < m_PointSetContainer.size(); i++)
@ -654,13 +707,15 @@ public class FunctionArea extends DArea implements Serializable {
// if (returnVal == JFileChooser.APPROVE_OPTION) { // if (returnVal == JFileChooser.APPROVE_OPTION) {
// File selected = m_FileChooser.getSelectedFile(); // File selected = m_FileChooser.getSelectedFile();
// try { // try {
// ObjectInputStream oi = new ObjectInputStream(new BufferedInputStream(new FileInputStream(selected))); // ObjectInputStream oi = new ObjectInputStream(new BufferedInputStream(new
// FileInputStream(selected)));
// Object obj = oi.readObject(); // Object obj = oi.readObject();
// oi.close(); // oi.close();
// //
// Object[] objects = (Object[]) obj; // Object[] objects = (Object[]) obj;
// for (int i = 0; i < objects.length; i++) { // for (int i = 0; i < objects.length; i++) {
// GraphPointSet xx = ((GraphPointSet.SerPointSet) objects[i]).getGraphPointSet(); // GraphPointSet xx = ((GraphPointSet.SerPointSet)
// objects[i]).getGraphPointSet();
// xx.initGraph(this); // xx.initGraph(this);
// addGraphPointSet(xx); // addGraphPointSet(xx);
// } // }
@ -684,7 +739,8 @@ public class FunctionArea extends DArea implements Serializable {
// public void saveObject() { // public void saveObject() {
// Object[] object = new Object[m_PointSetContainer.size()]; // Object[] object = new Object[m_PointSetContainer.size()];
// for (int i = 0; i < m_PointSetContainer.size(); i++) { // for (int i = 0; i < m_PointSetContainer.size(); i++) {
// object[i] = ((GraphPointSet) m_PointSetContainer.get(i)).getSerPointSet(); // object[i] = ((GraphPointSet)
// m_PointSetContainer.get(i)).getSerPointSet();
// } // }
// if (m_FileChooser == null) // if (m_FileChooser == null)
// createFileChooser(); // createFileChooser();
@ -692,7 +748,8 @@ public class FunctionArea extends DArea implements Serializable {
// if (returnVal == JFileChooser.APPROVE_OPTION) { // if (returnVal == JFileChooser.APPROVE_OPTION) {
// File sFile = m_FileChooser.getSelectedFile(); // File sFile = m_FileChooser.getSelectedFile();
// try { // try {
// ObjectOutputStream oo = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(sFile))); // ObjectOutputStream oo = new ObjectOutputStream(new
// BufferedOutputStream(new FileOutputStream(sFile)));
// oo.writeObject(object); // oo.writeObject(object);
// oo.close(); // oo.close();
// } catch (IOException ex) { // } catch (IOException ex) {
@ -714,7 +771,8 @@ public class FunctionArea extends DArea implements Serializable {
m_FileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY); m_FileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
} }
/** Add a popup menu for displaying certain information. /**
* Add a popup menu for displaying certain information.
*/ */
private void addPopup() { private void addPopup() {
addMouseListener(new MouseAdapter() { addMouseListener(new MouseAdapter() {
@ -727,11 +785,14 @@ public class FunctionArea extends DArea implements Serializable {
m_y = e.getY(); m_y = e.getY();
// The first info element // The first info element
JMenuItem Info = new JMenuItem("Graph Info: " + getGraphInfo(e.getX(), e.getY())); JMenuItem Info = new JMenuItem("Graph Info: "
+ getGraphInfo(e.getX(), e.getY()));
Info.addActionListener(new ActionListener() { Info.addActionListener(new ActionListener() {
// //
public void actionPerformed(ActionEvent ee) { public void actionPerformed(ActionEvent ee) {
DPoint temp = FunctionArea.this.getDMeasures().getDPoint(FunctionArea.this.m_x, FunctionArea.this.m_y); DPoint temp = FunctionArea.this.getDMeasures()
.getDPoint(FunctionArea.this.m_x,
FunctionArea.this.m_y);
DPointIcon icon1 = new DPointIcon() { DPointIcon icon1 = new DPointIcon() {
public void paint(Graphics g) { public void paint(Graphics g) {
g.drawLine(-2, 0, 2, 0); g.drawLine(-2, 0, 2, 0);
@ -749,10 +810,12 @@ public class FunctionArea extends DArea implements Serializable {
GraphMenu.add(Info); GraphMenu.add(Info);
if (m_RefPointListener != null) { if (m_RefPointListener != null) {
DPoint temp = getDMeasures().getDPoint(m_x, m_y); DPoint temp = getDMeasures().getDPoint(m_x, m_y);
JMenuItem refPoint = new JMenuItem("Reference Point:("+temp.x+"/"+temp.y+")"); JMenuItem refPoint = new JMenuItem("Reference Point:("
+ temp.x + "/" + temp.y + ")");
refPoint.addActionListener(new ActionListener() { refPoint.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) { public void actionPerformed(ActionEvent ee) {
DPoint temp = getDMeasures().getDPoint(m_x, m_y); DPoint temp = getDMeasures()
.getDPoint(m_x, m_y);
double[] point = new double[2]; double[] point = new double[2];
point[0] = temp.x; point[0] = temp.x;
point[1] = temp.y; point[1] = temp.y;
@ -766,7 +829,8 @@ public class FunctionArea extends DArea implements Serializable {
DPoint point = getNearestDPoint(e.getX(), e.getY()); DPoint point = getNearestDPoint(e.getX(), e.getY());
if (point != null) { if (point != null) {
JMenuItem InfoXY = new JMenuItem("(" + point.x + "/" + point.y+")"); JMenuItem InfoXY = new JMenuItem("(" + point.x + "/"
+ point.y + ")");
Info.addActionListener(new ActionListener() { Info.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) { public void actionPerformed(ActionEvent ee) {
} }
@ -775,14 +839,23 @@ public class FunctionArea extends DArea implements Serializable {
if (point.getIcon() instanceof InterfaceSelectablePointIcon) { if (point.getIcon() instanceof InterfaceSelectablePointIcon) {
m_CurrentPointIcon = point.getIcon(); m_CurrentPointIcon = point.getIcon();
if (((InterfaceSelectablePointIcon)m_CurrentPointIcon).getSelectionListener() != null) { if (((InterfaceSelectablePointIcon) m_CurrentPointIcon)
.getSelectionListener() != null) {
JMenuItem select; JMenuItem select;
AbstractEAIndividual indy = ((InterfaceSelectablePointIcon)m_CurrentPointIcon).getEAIndividual(); AbstractEAIndividual indy = ((InterfaceSelectablePointIcon) m_CurrentPointIcon)
if (indy.isMarked()) select = new JMenuItem("Deselect individual"); .getEAIndividual();
else select = new JMenuItem("Select individual"); if (indy.isMarked())
select = new JMenuItem(
"Deselect individual");
else
select = new JMenuItem("Select individual");
select.addActionListener(new ActionListener() { select.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) { public void actionPerformed(ActionEvent ee) {
((InterfaceSelectablePointIcon)m_CurrentPointIcon).getSelectionListener().individualSelected(((InterfaceSelectablePointIcon)m_CurrentPointIcon).getEAIndividual()); ((InterfaceSelectablePointIcon) m_CurrentPointIcon)
.getSelectionListener()
.individualSelected(
((InterfaceSelectablePointIcon) m_CurrentPointIcon)
.getEAIndividual());
} }
}); });
GraphMenu.add(select); GraphMenu.add(select);
@ -791,10 +864,12 @@ public class FunctionArea extends DArea implements Serializable {
if (point.getIcon() instanceof InterfaceDPointWithContent) { if (point.getIcon() instanceof InterfaceDPointWithContent) {
m_CurrentPointIcon = point.getIcon(); m_CurrentPointIcon = point.getIcon();
JMenuItem drawIndy = new JMenuItem("Show individual"); JMenuItem drawIndy = new JMenuItem(
"Show individual");
drawIndy.addActionListener(new ActionListener() { drawIndy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) { public void actionPerformed(ActionEvent ee) {
((InterfaceDPointWithContent)m_CurrentPointIcon).showIndividual(); ((InterfaceDPointWithContent) m_CurrentPointIcon)
.showIndividual();
} }
}); });
GraphMenu.add(drawIndy); GraphMenu.add(drawIndy);
@ -813,15 +888,19 @@ public class FunctionArea extends DArea implements Serializable {
JMenuItem removeGraph = new JMenuItem("Remove graph"); JMenuItem removeGraph = new JMenuItem("Remove graph");
removeGraph.addActionListener(new ActionListener() { removeGraph.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) { public void actionPerformed(ActionEvent ee) {
clearGraph(FunctionArea.this.m_x, FunctionArea.this.m_y); clearGraph(FunctionArea.this.m_x,
FunctionArea.this.m_y);
} }
}); });
GraphMenu.add(removeGraph); GraphMenu.add(removeGraph);
JMenuItem changecolorGraph = new JMenuItem("Change color"); JMenuItem changecolorGraph = new JMenuItem(
changecolorGraph.addActionListener(new ActionListener() { "Change color");
changecolorGraph
.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) { public void actionPerformed(ActionEvent ee) {
changeColorGraph(FunctionArea.this.m_x, FunctionArea.this.m_y); changeColorGraph(FunctionArea.this.m_x,
FunctionArea.this.m_y);
} }
}); });
GraphMenu.add(changecolorGraph); GraphMenu.add(changecolorGraph);
@ -829,7 +908,8 @@ public class FunctionArea extends DArea implements Serializable {
JMenuItem removePoint = new JMenuItem("Remove point"); JMenuItem removePoint = new JMenuItem("Remove point");
removePoint.addActionListener(new ActionListener() { removePoint.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) { public void actionPerformed(ActionEvent ee) {
removePoint(FunctionArea.this.m_x, FunctionArea.this.m_y); removePoint(FunctionArea.this.m_x,
FunctionArea.this.m_y);
} }
}); });
GraphMenu.add(removePoint); GraphMenu.add(removePoint);
@ -840,22 +920,28 @@ public class FunctionArea extends DArea implements Serializable {
}); });
} }
/** This method allows to add a selection listener to the PointIcon /**
* it should need more than one listener to this abstruse event * This method allows to add a selection listener to the PointIcon it should
* @param a The selection listener * need more than one listener to this abstruse event
*
* @param a
* The selection listener
*/ */
public void addRefPointSelectionListener(InterfaceRefPointListener a) { public void addRefPointSelectionListener(InterfaceRefPointListener a) {
this.m_RefPointListener = a; this.m_RefPointListener = a;
} }
/** This method returns the selection listener to the PointIcon /**
* This method returns the selection listener to the PointIcon
*
* @return InterfaceSelectionListener * @return InterfaceSelectionListener
*/ */
public InterfaceRefPointListener getRefPointSelectionListener() { public InterfaceRefPointListener getRefPointSelectionListener() {
return this.m_RefPointListener; return this.m_RefPointListener;
} }
/** This method allows to remove the selection listener to the PointIcon /**
* This method allows to remove the selection listener to the PointIcon
*/ */
public void removeRefPointSelectionListeners() { public void removeRefPointSelectionListeners() {
this.m_RefPointListener = null; this.m_RefPointListener = null;