diff --git a/client/src/org/adempiere/apps/graph/BarGraph.java b/client/src/org/adempiere/apps/graph/BarGraph.java index 3996e04fce..be5097b95a 100644 --- a/client/src/org/adempiere/apps/graph/BarGraph.java +++ b/client/src/org/adempiere/apps/graph/BarGraph.java @@ -1,5 +1,5 @@ /****************************************************************************** - * Product: Adempiere ERP & CRM Smart Business Solution * + * Product: Adempiere ERP & CRM Smart Business Solution * * Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. * * This program is free software; you can redistribute it and/or modify it * * under the terms version 2 of the GNU General Public License as published * @@ -47,6 +47,8 @@ import org.jfree.chart.ChartMouseEvent; import org.jfree.chart.ChartMouseListener; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; +import org.jfree.chart.entity.CategoryItemEntity; +import org.jfree.chart.entity.ChartEntity; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; @@ -57,6 +59,9 @@ import org.jfree.data.category.DefaultCategoryDataset; * * @author Jorg Janke * @version $Id: BarGraph.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $ + * + * @author Teo Sarca, www.arhipac.ro + *
  • BF [ 2507325 ] BarGraph zoom not working */ public class BarGraph extends CPanel implements ChartMouseListener { @@ -411,91 +416,102 @@ public class BarGraph extends CPanel implements ChartMouseListener //column.addActionListener(this); } // add - - /************************************************************************** - * Paint Component - * @param g graphics + /** + * Get BarGraphColumn for ChartEntity + * @param event + * @return BarGraphColumn or null if not found */ + private BarGraphColumn getBarGraphColumn(ChartMouseEvent event) + { + ChartEntity entity = event.getEntity(); + String key = null; + if (entity instanceof CategoryItemEntity) + { + Comparable rowKey = ((CategoryItemEntity)entity).getRowKey(); + if (rowKey != null) + { + key = rowKey.toString(); + } + } + if (key == null) + { + return null; + } + for (int i = 0; i < list.size(); i++) + { + final String label = list.get(i).getLabel(); + if (key.equals(label)) + { + return list.get(i); + } + } + // + return null; + } - public void chartMouseClicked(ChartMouseEvent event){ - if ((event.getEntity()!=null) && (event.getTrigger().getClickCount() > 1)) { + public void chartMouseClicked(ChartMouseEvent event) + { + if ((event.getEntity()!=null) && (event.getTrigger().getClickCount() > 1)) + { setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - BarGraphColumn bgc = null; - String eventUrl = event.getEntity().toString(); - for (int i = 0; i < list.size(); i++){ - if ( eventUrl.substring(eventUrl.length() - list.get(i).getLabel().length()).equals(list.get(i).getLabel())) - bgc = list.get(i); - } - if (null==bgc) return; - log.info(bgc.getName()); - MQuery query = null; - if (bgc.getAchievement() != null) // Single Achievement + try { - MAchievement a = bgc.getAchievement(); - query = MQuery.getEqualQuery("PA_Measure_ID", a.getPA_Measure_ID()); + BarGraphColumn bgc = getBarGraphColumn(event); + if (bgc == null) + { + return; + } + log.info(bgc.getName()); + MQuery query = null; + if (bgc.getAchievement() != null) // Single Achievement + { + MAchievement a = bgc.getAchievement(); + query = MQuery.getEqualQuery("PA_Measure_ID", a.getPA_Measure_ID()); + } + else if (bgc.getGoal() != null) // Multiple Achievements + { + MGoal goal = bgc.getGoal(); + query = MQuery.getEqualQuery("PA_Measure_ID", goal.getPA_Measure_ID()); + } + else if (bgc.getMeasureCalc() != null) // Document + { + MMeasureCalc mc = bgc.getMeasureCalc(); + query = mc.getQuery(m_goal.getRestrictions(false), + bgc.getMeasureDisplay(), bgc.getDate(), + MRole.getDefault()); // logged in role + } + else if (bgc.getProjectType() != null) // Document + { + MProjectType pt = bgc.getProjectType(); + query = pt.getQuery(m_goal.getRestrictions(false), + bgc.getMeasureDisplay(), bgc.getDate(), bgc.getID(), + MRole.getDefault()); // logged in role + } + else if (bgc.getRequestType() != null) // Document + { + MRequestType rt = bgc.getRequestType(); + query = rt.getQuery(m_goal.getRestrictions(false), + bgc.getMeasureDisplay(), bgc.getDate(), bgc.getID(), + MRole.getDefault()); // logged in role + } + if (query != null) + AEnv.zoom(query); + else + log.warning("Nothing to zoom to - " + bgc); } - else if (bgc.getGoal() != null) // Multiple Achievements + finally { - MGoal goal = bgc.getGoal(); - query = MQuery.getEqualQuery("PA_Measure_ID", goal.getPA_Measure_ID()); + setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } - else if (bgc.getMeasureCalc() != null) // Document - { - MMeasureCalc mc = bgc.getMeasureCalc(); - query = mc.getQuery(m_goal.getRestrictions(false), - bgc.getMeasureDisplay(), bgc.getDate(), - MRole.getDefault()); // logged in role - } - else if (bgc.getProjectType() != null) // Document - { - MProjectType pt = bgc.getProjectType(); - query = pt.getQuery(m_goal.getRestrictions(false), - bgc.getMeasureDisplay(), bgc.getDate(), bgc.getID(), - MRole.getDefault()); // logged in role - } - else if (bgc.getRequestType() != null) // Document - { - MRequestType rt = bgc.getRequestType(); - query = rt.getQuery(m_goal.getRestrictions(false), - bgc.getMeasureDisplay(), bgc.getDate(), bgc.getID(), - MRole.getDefault()); // logged in role - } - if (query != null) - AEnv.zoom(query); - else - log.warning("Nothing to zoom to - " + bgc); - setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } } - public void chartMouseMoved(ChartMouseEvent event) {} - - public BarGraphColumn[] getBarGraphColumnList() { - BarGraphColumn[] array = new BarGraphColumn[list.size()]; - for (int i = 0; i < list.size(); i++){ - array[i] = list.get(i); - } - return array; + public void chartMouseMoved(ChartMouseEvent event) + { } - /* - public void componentHidden(ComponentEvent e) { + public BarGraphColumn[] getBarGraphColumnList() + { + return list.toArray(new BarGraphColumn[list.size()]); } - public void componentMoved(ComponentEvent e) { - } - public void componentResized(ComponentEvent e) { - float aspectRatio = 1.6f; - Dimension size = getSize(); - if (size.width > size.height * aspectRatio) - chartPanel.setSize( new Dimension( - java.lang.Math.round(size.height*aspectRatio), - size.height)); - else - chartPanel.setSize(new Dimension( - size.width, - java.lang.Math.round(size.width / aspectRatio))); - } - public void componentShown(ComponentEvent e) { - } - */ } // BarGraph