New popup menu for FunctionArea

This commit is contained in:
Marcel Kronfeld 2010-08-13 15:27:03 +00:00
parent e708eebd93
commit 453520096f
2 changed files with 133 additions and 125 deletions

View File

@ -167,162 +167,164 @@ public class FunctionArea extends DArea implements Serializable {
if ((e.getModifiers() & InputEvent.BUTTON1_MASK) == InputEvent.BUTTON1_MASK) {
// do nothing
} else {
JPopupMenu GraphMenu = new JPopupMenu();
JPopupMenu graphPopupMenu = new JPopupMenu();
m_x = e.getX();
m_y = e.getY();
// The first info element
JMenuItem Info = new JMenuItem("Graph Info: "
+ getGraphInfo(e.getX(), e.getY()));
Info.addActionListener(new ActionListener() {
//
// General entries
String togGTTName = (isShowGraphToolTips() ? "Deactivate":"Activate") + " graph tool tips";
addMenuItem(graphPopupMenu, togGTTName, new ActionListener() {
public void actionPerformed(ActionEvent ee) {
DPoint temp = FunctionArea.this.getDMeasures()
.getDPoint(FunctionArea.this.m_x,
FunctionArea.this.m_y);
DPointIcon icon1 = new DPointIcon() {
public DBorder getDBorder() {
return new DBorder(4, 4, 4, 4);
}
public void paint(Graphics g) {
g.drawLine(-2, 0, 2, 0);
g.drawLine(0, 0, 0, 4);
}
};
temp.setIcon(icon1);
FunctionArea.this.addDElement(temp);
setShowGraphToolTips(!isShowGraphToolTips());
}
});
GraphMenu.add(Info);
String togLName = (isShowLegend() ? "Hide" : "Show" ) + " legend";
addMenuItem(graphPopupMenu, togLName, new ActionListener() {
public void actionPerformed(ActionEvent ee) {
toggleLegend();
}
});
if (FunctionArea.this.m_PointSetContainer.size() > 0) {
addMenuItem(graphPopupMenu, "Recolor all graphs", new ActionListener() {
public void actionPerformed(ActionEvent ee) {
recolorAllGraphsByIndex();
}
});
}
if (m_RefPointListener != null) {
DPoint temp = getDMeasures().getDPoint(m_x, m_y);
JMenuItem refPoint = new JMenuItem("Reference Point:("
+ temp.x + "/" + temp.y + ")");
refPoint.addActionListener(new ActionListener() {
addMenuItem(graphPopupMenu, "Select Reference Point:("+ temp.x + "/" + temp.y + ")",
new ActionListener() {
public void actionPerformed(ActionEvent ee) {
DPoint temp = getDMeasures()
.getDPoint(m_x, m_y);
.getDPoint(m_x, m_y);
double[] point = new double[2];
point[0] = temp.x;
point[1] = temp.y;
m_RefPointListener.refPointGiven(point);
}
});
GraphMenu.add(refPoint);
}
// darn this point is an empty copy !!
DPoint point = getNearestDPoint(e.getX(), e.getY());
if (point != null) {
JMenuItem InfoXY = new JMenuItem("(" + point.x + "/"
+ point.y + ")");
Info.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) {
}
});
GraphMenu.add(InfoXY);
// the point info element
addMenuItem(graphPopupMenu, "Nearest point: (" + point.x + "/"+ point.y + ")", new ActionListener() {
public void actionPerformed(ActionEvent ee) {}
}, false);
if (point.getIcon() instanceof InterfaceSelectablePointIcon) {
m_CurrentPointIcon = point.getIcon();
if (((InterfaceSelectablePointIcon) m_CurrentPointIcon)
.getSelectionListener() != null) {
JMenuItem select;
AbstractEAIndividual indy = ((InterfaceSelectablePointIcon) m_CurrentPointIcon)
.getEAIndividual();
if (indy.isMarked())
select = new JMenuItem(
"Deselect individual");
else
select = new JMenuItem("Select individual");
select.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) {
((InterfaceSelectablePointIcon) m_CurrentPointIcon)
.getSelectionListener()
.individualSelected(
((InterfaceSelectablePointIcon) m_CurrentPointIcon)
.getEAIndividual());
}
});
GraphMenu.add(select);
}
}
if (point.getIcon() instanceof InterfaceDPointWithContent) {
m_CurrentPointIcon = point.getIcon();
JMenuItem drawIndy = new JMenuItem(
"Show individual");
drawIndy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) {
((InterfaceDPointWithContent) m_CurrentPointIcon)
.showIndividual();
}
});
GraphMenu.add(drawIndy);
}
}
if (FunctionArea.this.m_PointSetContainer.size() > 0) { // there is at least one graph
String togGTTName = (isShowGraphToolTips() ? "Deactivate":"Activate") + " graph tool tips";
JMenuItem togGraphToolTips = new JMenuItem(togGTTName);
togGraphToolTips.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) {
setShowGraphToolTips(!isShowGraphToolTips());
}
});
GraphMenu.add(togGraphToolTips);
String togLName = (isShowLegend() ? "Hide" : "Show" ) + " legend";
JMenuItem togLegend = new JMenuItem(togLName);
togLegend.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) {
toggleLegend();
}
});
GraphMenu.add(togLegend);
JMenuItem removeGraph = new JMenuItem("Remove graph");
removeGraph.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) {
clearGraph(FunctionArea.this.m_x,
FunctionArea.this.m_y);
}
});
GraphMenu.add(removeGraph);
JMenuItem changecolorGraph = new JMenuItem("Change graph color");
changecolorGraph.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) {
changeColorGraph(FunctionArea.this.m_x,
FunctionArea.this.m_y);
}
});
GraphMenu.add(changecolorGraph);
JMenuItem changeAllColors = new JMenuItem("Recolor all graphs");
changeAllColors.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ee) {
recolorAllGraphsByIndex();
}
});
GraphMenu.add(changeAllColors);
JMenuItem removePoint = new JMenuItem("Remove point");
removePoint.addActionListener(new ActionListener() {
addMenuItem(graphPopupMenu, " Remove point", new ActionListener() {
public void actionPerformed(ActionEvent ee) {
removePoint(FunctionArea.this.m_x,
FunctionArea.this.m_y);
}
});
GraphMenu.add(removePoint);
if (point.getIcon() instanceof InterfaceSelectablePointIcon) {
m_CurrentPointIcon = point.getIcon();
if (((InterfaceSelectablePointIcon) m_CurrentPointIcon).getSelectionListener() != null) {
AbstractEAIndividual indy = ((InterfaceSelectablePointIcon) m_CurrentPointIcon).getEAIndividual();
String selectTitle = indy.isMarked() ? " Deselect individual" : " Select individual";
addMenuItem(graphPopupMenu, selectTitle, new ActionListener() {
public void actionPerformed(ActionEvent ee) {
((InterfaceSelectablePointIcon) m_CurrentPointIcon)
.getSelectionListener()
.individualSelected(
((InterfaceSelectablePointIcon) m_CurrentPointIcon)
.getEAIndividual());
}
});
}
}
if (point.getIcon() instanceof InterfaceDPointWithContent) {
m_CurrentPointIcon = point.getIcon();
addMenuItem(graphPopupMenu, " Show individual", new ActionListener() {
public void actionPerformed(ActionEvent ee) {
((InterfaceDPointWithContent) m_CurrentPointIcon)
.showIndividual();
}
});
}
}
GraphMenu.show(FunctionArea.this, e.getX(), e.getY());
if (FunctionArea.this.m_PointSetContainer.size() > 0) { // there is at least one graph
// The graph info element
// int gIndex = getNearestGraphIndex(e.getX(), e.getY());
addMenuItem(graphPopupMenu, "Graph Info: "+getGraphInfo(e.getX(), e.getY()),
new ActionListener() {
public void actionPerformed(ActionEvent ee) {
DPoint temp = FunctionArea.this.getDMeasures().getDPoint(FunctionArea.this.m_x, FunctionArea.this.m_y);
DPointIcon icon1 = new DPointIcon() {
public DBorder getDBorder() {
return new DBorder(4, 4, 4, 4);
}
public void paint(Graphics g) {
g.drawLine(-2, 0, 2, 0);
g.drawLine(0, 0, 0, 4);
}
};
temp.setIcon(icon1);
FunctionArea.this.addDElement(temp);
}
}, false);
addMenuItem(graphPopupMenu, " Remove graph", new ActionListener() {
public void actionPerformed(ActionEvent ee) {
clearGraph(FunctionArea.this.m_x,
FunctionArea.this.m_y);
}
});
addMenuItem(graphPopupMenu, " Change graph color", new ActionListener() {
public void actionPerformed(ActionEvent ee) {
changeColorGraph(FunctionArea.this.m_x,
FunctionArea.this.m_y);
}
});
}
graphPopupMenu.show(FunctionArea.this, e.getX(), e.getY());
}
}
});
}
/**
* Create an enabled menu item with given title and listener, add it to the menu and return it.
*
* @param menu
* @param title
* @param aListener
* @return
*/
private JMenuItem addMenuItem(JPopupMenu menu, String title, ActionListener aListener) {
return addMenuItem(menu, title, aListener, true);
}
/**
* Create a menu item with given title and listener, add it to the menu and return it. It may be
* enabled or disabled.
*
* @param menu
* @param title
* @param aListener
* @param enabled
* @return
*/
private JMenuItem addMenuItem(JPopupMenu menu, String title, ActionListener aListener, boolean enabled) {
JMenuItem item = new JMenuItem(title);
// if (bgColor!=null) item.setForeground(bgColor);
item.addActionListener(aListener);
item.setEnabled(enabled);
menu.add(item);
return item;
}
/**
* This method allows to add a selection listener to the PointIcon it should
* need more than one listener to this abstruse event
@ -372,6 +374,7 @@ public class FunctionArea extends DArea implements Serializable {
index++;
}
}
updateLegend();
}
/**
@ -728,6 +731,11 @@ public class FunctionArea extends DArea implements Serializable {
return "none";
}
public Color getGraphColor(int graphIndex) {
if (graphIndex>=0) return m_PointSetContainer.get(graphIndex).getColor();
else return null;
}
/**
*
* @param GraphLabel

View File

@ -25,7 +25,7 @@ import eva2.tools.chart2d.SlimRect;
* GraphPointSets as used in FunctionArea. Painting is done in FunctionArea. As
* an alternative, an own frame could be created.
*
* @author mkron
* @author mkron, draeger
*
*/
public class GraphPointSetLegend {