[ FeatureRequests-1731662 ] Performance Dashboard Update Mechanism. Also did some cleanup.

This commit is contained in:
bmovaqar 2007-06-05 21:08:42 +00:00
parent d29162a086
commit 95d8e5ed95
2 changed files with 495 additions and 427 deletions

View File

@ -1,96 +1,166 @@
/******************************************************************************
* 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 *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
/**********************************************************************
* This file is part of Adempiere ERP Bazaar *
* http://www.adempiere.org *
* *
* Copyright (C) 1999 - 2006 Compiere Inc. *
* Copyright (C) Contributors *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
* as published by the Free Software Foundation; either version 2 *
* of the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
* MA 02110-1301, USA. *
* *
* Contributors: *
* - Bahman Movaqar (bmovaqar@users.sf.net) *
**********************************************************************/
package org.compiere.apps.graph;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import org.compiere.model.*;
import org.compiere.swing.*;
import org.compiere.util.*;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import org.compiere.model.MGoal;
import org.compiere.swing.CMenuItem;
import org.compiere.swing.CPanel;
import org.compiere.util.CLogger;
import org.compiere.util.Env;
/**
* Performance Analysis Panel.
* Key Performace Indicators
*
* @author Jorg Janke
* @version $Id: PAPanel.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
* Performance Analysis Panel. Key Performace Indicators
*
* @author Jorg Janke
* @version $Id: PAPanel.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
*/
public class PAPanel extends CPanel implements ActionListener
{
public class PAPanel extends CPanel implements MouseListener, ActionListener {
/**
* Get Panel if User has Perfpormance Goals
* @return panel pr null
* Serial version UID
*/
public static PAPanel get()
{
private static final long serialVersionUID = 900002328486L;
/**
* Get Panel if User has Perfpormance Goals
*
* @return panel pr null
*/
public static PAPanel get() {
int AD_User_ID = Env.getAD_User_ID(Env.getCtx());
MGoal[] goals = MGoal.getUserGoals(Env.getCtx(), AD_User_ID);
if (goals.length == 0)
return null;
return new PAPanel(goals);
} // get
/**************************************************************************
* Constructor
* @param goals
} // get
/***************************************************************************
* Constructor
*
* @param goals
*/
private PAPanel (MGoal[] goals)
{
super ();
private PAPanel(MGoal[] goals) {
super();
m_goals = goals;
init();
} // PAPanel
/** Goals */
private MGoal[] m_goals = null;
/** Logger */
private static CLogger log = CLogger.getCLogger (PAPanel.class);
/**
* Static/Dynamic Init
*/
private void init()
{
BoxLayout layout = new BoxLayout(this, BoxLayout.PAGE_AXIS);
for (int i = 0; i < m_goals.length; i++)
{
PerformanceIndicator pi = new PerformanceIndicator(m_goals[i]);
pi.addActionListener(this);
add (pi);
}
} // init
} // PAPanel
/** Goals */
private MGoal[] m_goals = null;
/** Logger */
private static CLogger log = CLogger.getCLogger(PAPanel.class);
/** Popup menu */
JPopupMenu pmenu = new JPopupMenu();
/** Update menu item */
CMenuItem menuUpdate = new CMenuItem();
/**
* Action Listener for Drill Down
* @param e event
* Static/Dynamic Init
*/
public void actionPerformed (ActionEvent e)
{
if (e.getSource() instanceof PerformanceIndicator)
{
PerformanceIndicator pi = (PerformanceIndicator)e.getSource();
private void init() {
for (int i = 0; i < m_goals.length; i++) {
PerformanceIndicator pi = new PerformanceIndicator(m_goals[i]);
pi.addActionListener(this);
add(pi);
}
// Setup the popup menu
menuUpdate.setText("Update Indicators");
menuUpdate.setActionCommand("update");
menuUpdate.addActionListener(this);
pmenu.setLightWeightPopupEnabled(false);
pmenu.add(menuUpdate);
this.addMouseListener(this);
} // init
/**
* Action Listener for Drill Down
*
* @param e
* event
*/
public void actionPerformed(ActionEvent e) {
if (e.getSource() instanceof PerformanceIndicator) {
PerformanceIndicator pi = (PerformanceIndicator) e.getSource();
log.info(pi.getName());
MGoal goal = pi.getGoal();
if (goal.getMeasure() != null)
new PerformanceDetail(goal);
}
} // actionPerformed
} else if (e.getActionCommand().equals("update"))
updateInidcators();
} // actionPerformed
} // PAPanel
/**
* Updates indicators.
*/
private void updateInidcators() {
for (int i = 0; i < m_goals.length; i++) {
log.info("Updating indicator \"" + m_goals[i].getName() + "\"...");
remove(i);
PerformanceIndicator pi = new PerformanceIndicator(m_goals[i]);
pi.addActionListener(this);
add(pi, i);
log.info("done.");
}
} // updateIndicators
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e))
pmenu.show((Component) e.getSource(), e.getX(), e.getY());
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
} // PAPanel

View File

@ -1,446 +1,444 @@
/******************************************************************************
* 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 *
* by the Free Software Foundation. This program is distributed in the hope *
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* See the GNU General Public License for more details. *
* You should have received a copy of the GNU General Public License along *
* with this program; if not, write to the Free Software Foundation, Inc., *
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
* For the text or an alternative of this public license, you may reach us *
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
* or via info@compiere.org or http://www.compiere.org/license.html *
*****************************************************************************/
/**********************************************************************
* This file is part of Adempiere ERP Bazaar *
* http://www.adempiere.org *
* *
* Copyright (C) 1999 - 2006 Compiere Inc. *
* Copyright (C) Contributors *
* *
* This program is free software; you can redistribute it and/or *
* modify it under the terms of the GNU General Public License *
* as published by the Free Software Foundation; either version 2 *
* of the License, or (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the Free Software *
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
* MA 02110-1301, USA. *
* *
* Contributors: *
* - Bahman Movaqar (bmovaqar@users.sf.net) *
**********************************************************************/
package org.compiere.apps.graph;
import java.awt.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
//vpj-cd e-evolution
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Font;
//import java.awt.R`;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.DecimalFormat;
import javax.swing.BorderFactory;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities;
import javax.swing.border.BevelBorder;
import javax.swing.event.EventListenerList;
import org.compiere.model.MGoal;
import org.compiere.swing.CMenuItem;
import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.compiere.util.Msg;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.*;
import org.jfree.data.general.*;
import org.jfree.chart.plot.DialShape;
import org.jfree.chart.plot.MeterInterval;
import org.jfree.chart.plot.MeterPlot;
import org.jfree.data.Range;
import org.jfree.data.general.DefaultValueDataset;
import org.jfree.ui.RectangleInsets;
//vpj-cd e-evolution
import org.compiere.model.*;
import org.compiere.swing.*;
import org.compiere.util.*;
/**
* Performance Indicator
*
* @author Jorg Janke
* @version $Id: PerformanceIndicator.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
* Performance Indicator
*
* @author Jorg Janke
* @version $Id: PerformanceIndicator.java,v 1.2 2006/07/30 00:51:28 jjanke Exp $
*/
//vpj-cd e-evolution public class PerformanceIndicator extends JComponent
public class PerformanceIndicator extends JPanel
implements MouseListener, ActionListener
{
// vpj-cd e-evolution public class PerformanceIndicator extends JComponent
public class PerformanceIndicator extends JPanel implements MouseListener,
ActionListener {
/**
* Constructor
* @param goal goal model
* Serial version UID
*/
public PerformanceIndicator(MGoal goal)
{
private static final long serialVersionUID = -3988387418888L;
/**
* Constructor
*
* @param goal
* goal model
*/
public PerformanceIndicator(MGoal goal) {
super();
m_goal = goal;
setName(m_goal.getName());
//vpj-cd e-evolution getPreferredSize(); // calculate size
init();
// vpj-cd e-evolution getPreferredSize(); // calculate size
init();
//
setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
setOpaque(true);
//vpj-cd e-evolution updateDisplay();
// vpj-cd e-evolution updateDisplay();
//
mRefresh.addActionListener(this);
popupMenu.add(mRefresh);
//
addMouseListener(this);
} // PerformanceIndicator
} // PerformanceIndicator
private MGoal m_goal = null;
/** The Performance Name */
private String m_text = null;
/** Performance Line */
private double m_line = 0;
/** Height */
private static double s_height = 45;
/** 100% width */
private static double s_width100 = 150;
/** Max width */
private static double s_widthMax = 250;
/** Integer Number Format */
private static DecimalFormat s_format = DisplayType.getNumberFormat(DisplayType.Integer);
private MGoal m_goal = null;
JPopupMenu popupMenu = new JPopupMenu();
private CMenuItem mRefresh = new CMenuItem(Msg.getMsg(Env.getCtx(), "Refresh"), Env.getImageIcon("Refresh16.gif"));
//Insert Pie Graph Kinamo (pelgrim)
private static Color colorOK = Color.magenta;
private static Color colorNotOK = Color.lightGray;
//private static Dimension indicatordimension = new Dimension(150, 150);
private static Dimension indicatordimension = new Dimension(190,130);
private static Dimension paneldimension = new Dimension(200, 200);
//private static Dimension
/** The Performance Name */
private String m_text = null;
/** Performance Line */
private double m_line = 0;
/** Height */
private static double s_height = 45;
/** 100% width */
private static double s_width100 = 150;
/** Max width */
private static double s_widthMax = 250;
/** Integer Number Format */
private static DecimalFormat s_format = DisplayType
.getNumberFormat(DisplayType.Integer);
JPopupMenu popupMenu = new JPopupMenu();
private CMenuItem mRefresh = new CMenuItem(Msg.getMsg(Env.getCtx(),
"Refresh"), Env.getImageIcon("Refresh16.gif"));
// Insert Pie Graph Kinamo (pelgrim)
private static Color colorOK = Color.magenta;
private static Color colorNotOK = Color.lightGray;
// private static Dimension indicatordimension = new Dimension(150, 150);
private static Dimension indicatordimension = new Dimension(190, 130);
private static Dimension paneldimension = new Dimension(200, 200);
// private static Dimension
/**
* Get Goal
* @return goal
* Get Goal
*
* @return goal
*/
public MGoal getGoal()
{
public MGoal getGoal() {
return m_goal;
} // getGoal
/**
* Init Graph Display
* Kinamo (pelgrim)
} // getGoal
/**
* Init Graph Display Kinamo (pelgrim)
*/
private void init() {
// Set Text
// Set Text
StringBuffer text = new StringBuffer(m_goal.getName());
if (m_goal.isTarget())
text.append(": ").append(m_goal.getPercent()).append("%");
else
text.append(": ").append(s_format.format(m_goal.getMeasureActual()));
text.append(": ")
.append(s_format.format(m_goal.getMeasureActual()));
m_text = text.toString();
// ToolTip
// ToolTip
text = new StringBuffer();
if (m_goal.getDescription() != null)
text.append(m_goal.getDescription()).append(": ");
text.append(s_format.format(m_goal.getMeasureActual()));
if (m_goal.isTarget())
text.append(" ").append(Msg.getMsg(Env.getCtx(), "of")).append(" ")
.append(s_format.format(m_goal.getMeasureTarget()));
.append(s_format.format(m_goal.getMeasureTarget()));
setToolTipText(text.toString());
//
setBackground(m_goal.getColor());
setForeground(GraphUtil.getForeground(getBackground()));
// Performance Line
// Performance Line
int percent = m_goal.getPercent();
if (percent > 100) // draw 100% line
if (percent > 100) // draw 100% line
m_line = s_width100;
else // draw Performance Line
else
// draw Performance Line
m_line = s_width100 * m_goal.getGoalPerformanceDouble();
//vpj-cd e-evolution Plot Meter -----------------------------------
JFreeChart chart = null;
String title = m_text;
DefaultValueDataset data = new DefaultValueDataset((float)m_goal.getPercent());
MeterPlot plot = new MeterPlot(data);
plot.addInterval(new MeterInterval("Normal", new Range(0.0, 100.0)));
// vpj-cd e-evolution Plot Meter -----------------------------------
JFreeChart chart = null;
plot.setUnits(m_goal.getName());
plot.setRange(new Range(0, 100));
plot.setDialShape(DialShape.CIRCLE);
plot.setDialBackgroundPaint(m_goal.getColor());
plot.setNeedlePaint(Color.white);
plot.setTickSize(10);
plot.setTickLabelFont(new Font("SansSerif", Font.BOLD, 8));
plot.setInsets(new RectangleInsets(1.0, 2.0, 3.0, 4.0));
String title = m_text;
DefaultValueDataset data = new DefaultValueDataset((float) m_goal
.getPercent());
MeterPlot plot = new MeterPlot(data);
plot.addInterval(new MeterInterval("Normal", new Range(0.0, 100.0)));
plot.setUnits(m_goal.getName());
plot.setRange(new Range(0, 100));
plot.setDialShape(DialShape.CIRCLE);
plot.setDialBackgroundPaint(m_goal.getColor());
plot.setNeedlePaint(Color.white);
plot.setTickSize(10);
plot.setTickLabelFont(new Font("SansSerif", Font.BOLD, 8));
plot.setInsets(new RectangleInsets(1.0, 2.0, 3.0, 4.0));
chart = new JFreeChart( m_text, new Font("SansSerif", Font.BOLD, 12), plot,false);
//chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.ORANGE));
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(indicatordimension);
chart = new JFreeChart(m_text, new Font("SansSerif", Font.BOLD, 12),
plot, false);
// chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0,
// 1000, Color.ORANGE));
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(indicatordimension);
chartPanel.addChartMouseListener( new org.jfree.chart.ChartMouseListener()
{
public void chartMouseClicked(org.jfree.chart.ChartMouseEvent e)
{
//plot p = (MeterPlot) e.getSource();
MouseEvent me = e.getTrigger();
chartPanel
.addChartMouseListener(new org.jfree.chart.ChartMouseListener() {
public void chartMouseClicked(
org.jfree.chart.ChartMouseEvent e) {
// plot p = (MeterPlot) e.getSource();
MouseEvent me = e.getTrigger();
if (SwingUtilities.isLeftMouseButton(me) && me.getClickCount() > 1)
fireActionPerformed(me);
if (SwingUtilities.isRightMouseButton(me))
popupMenu.show((Component)me.getSource(), me.getX(), me.getY());
}
public void chartMouseMoved(org.jfree.chart.ChartMouseEvent e)
{
if (SwingUtilities.isLeftMouseButton(me)
&& me.getClickCount() > 1)
fireActionPerformed(me);
// if (SwingUtilities.isRightMouseButton(me))
// popupMenu.show((Component)me.getSource(), me.getX(),
// me.getY());
}
}
public void chartMouseMoved(
org.jfree.chart.ChartMouseEvent e) {
});
this.add(chartPanel, BorderLayout.NORTH);
//---------------------------------------------
invalidate();
}
});
this.add(chartPanel, BorderLayout.NORTH);
// ---------------------------------------------
invalidate();
}
/**
* Update Display Data
* Update Display Data
*/
protected void updateDisplay()
{
// Set Text
/*begin vpj-cd e-evolution
StringBuffer text = new StringBuffer(m_goal.getName());
if (m_goal.isTarget())
text.append(": ").append(m_goal.getPercent()).append("%");
else
text.append(": ").append(s_format.format(m_goal.getMeasureActual()));
m_text = text.toString();
// ToolTip
text = new StringBuffer();
if (m_goal.getDescription() != null)
text.append(m_goal.getDescription()).append(": ");
text.append(s_format.format(m_goal.getMeasureActual()));
if (m_goal.isTarget())
text.append(" ").append(Msg.getMsg(Env.getCtx(), "of")).append(" ")
.append(s_format.format(m_goal.getMeasureTarget()));
setToolTipText(text.toString());
//
setBackground(m_goal.getColor());
setForeground(GraphUtil.getForeground(getBackground()));
// Performance Line
int percent = m_goal.getPercent();
if (percent > 100) // draw 100% line
m_line = s_width100;
else // draw Performance Line
m_line = s_width100 * m_goal.getGoalPerformanceDouble();
*/
JFreeChart chart = null;
protected void updateDisplay() {
// Set Text
/*
* begin vpj-cd e-evolution StringBuffer text = new
* StringBuffer(m_goal.getName()); if (m_goal.isTarget()) text.append(":
* ").append(m_goal.getPercent()).append("%"); else text.append(":
* ").append(s_format.format(m_goal.getMeasureActual())); m_text =
* text.toString(); // ToolTip text = new StringBuffer(); if
* (m_goal.getDescription() != null)
* text.append(m_goal.getDescription()).append(": ");
* text.append(s_format.format(m_goal.getMeasureActual())); if
* (m_goal.isTarget()) text.append(" ").append(Msg.getMsg(Env.getCtx(),
* "of")).append(" ")
* .append(s_format.format(m_goal.getMeasureTarget()));
* setToolTipText(text.toString()); // setBackground(m_goal.getColor());
* setForeground(GraphUtil.getForeground(getBackground())); //
* Performance Line int percent = m_goal.getPercent(); if (percent >
* 100) // draw 100% line m_line = s_width100; else // draw Performance
* Line m_line = s_width100 * m_goal.getGoalPerformanceDouble();
*/
JFreeChart chart = null;
String title = m_text;
DefaultValueDataset data = new DefaultValueDataset((float)m_goal.getPercent());
MeterPlot plot = new MeterPlot(data);
plot.addInterval(new MeterInterval("Normal", new Range(0.0, 100.0)));
String title = m_text;
DefaultValueDataset data = new DefaultValueDataset((float) m_goal
.getPercent());
MeterPlot plot = new MeterPlot(data);
plot.addInterval(new MeterInterval("Normal", new Range(0.0, 100.0)));
plot.setUnits(m_goal.getName());
plot.setRange(new Range(0, 100));
plot.setDialShape(DialShape.CIRCLE);
plot.setDialBackgroundPaint(m_goal.getColor());
plot.setNeedlePaint(Color.white);
plot.setTickSize(10);
plot.setTickLabelFont(new Font("SansSerif", Font.BOLD, 8));
plot.setInsets(new RectangleInsets(1.0, 2.0, 3.0, 4.0));
plot.setUnits(m_goal.getName());
plot.setRange(new Range(0, 100));
plot.setDialShape(DialShape.CIRCLE);
plot.setDialBackgroundPaint(m_goal.getColor());
plot.setNeedlePaint(Color.white);
plot.setTickSize(10);
plot.setTickLabelFont(new Font("SansSerif", Font.BOLD, 8));
plot.setInsets(new RectangleInsets(1.0, 2.0, 3.0, 4.0));
chart = new JFreeChart(m_text, new Font("SansSerif", Font.BOLD, 12),
plot, false);
// chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0,
// 1000, Color.ORANGE));
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(indicatordimension);
chart = new JFreeChart( m_text, new Font("SansSerif", Font.BOLD, 12), plot,false);
//chart.setBackgroundPaint(new GradientPaint(0, 0, Color.white, 0, 1000, Color.ORANGE));
ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(indicatordimension);
chartPanel
.addChartMouseListener(new org.jfree.chart.ChartMouseListener() {
public void chartMouseClicked(
org.jfree.chart.ChartMouseEvent e) {
// plot p = (MeterPlot) e.getSource();
System.out.println("evento" + e.getSource());
System.out.println("evento" + e.getTrigger());
System.out.println("evento" + e.getChart().getTitle());
chartPanel.addChartMouseListener( new org.jfree.chart.ChartMouseListener()
{
public void chartMouseClicked(org.jfree.chart.ChartMouseEvent e)
{
//plot p = (MeterPlot) e.getSource();
System.out.println("evento" + e.getSource());
System.out.println("evento" + e.getTrigger());
System.out.println("evento" + e.getChart().getTitle());
MouseEvent me = e.getTrigger();
MouseEvent me = e.getTrigger();
if (SwingUtilities.isLeftMouseButton(me)
&& me.getClickCount() > 1)
fireActionPerformed(me);
if (SwingUtilities.isRightMouseButton(me))
popupMenu.show((Component) me.getSource(), me
.getX(), me.getY());
}
if (SwingUtilities.isLeftMouseButton(me) && me.getClickCount() > 1)
fireActionPerformed(me);
if (SwingUtilities.isRightMouseButton(me))
popupMenu.show((Component)me.getSource(), me.getX(), me.getY());
}
public void chartMouseMoved(org.jfree.chart.ChartMouseEvent e)
{
public void chartMouseMoved(
org.jfree.chart.ChartMouseEvent e) {
}
}
});
this.add(chartPanel, BorderLayout.NORTH);
});
this.add(chartPanel, BorderLayout.NORTH);
// vpj-cd e-evolution getPreferredSize();
invalidate();
} // updateData
/**************************************************************************
* Get Preferred Size
* @return size
*/
/* vpj-cd e-evolution
public Dimension getPreferredSize()
{
if (!isPreferredSizeSet())
{
double width = s_width100;
if (m_goal.getPercent() > 100)
{
width = width * m_goal.getGoalPerformanceDouble();
width = Math.min(width, s_widthMax);
}
Dimension size = new Dimension();
size.setSize(width, s_height);
setPreferredSize(size);
setMinimumSize(size);
setMaximumSize(size);
}
return super.getPreferredSize();
} // getPreferredSize
// end vpj-cd
/**
* Paint Component
* @param g Graphics
*/
/*vpj-cd e-evolution
protected void paintComponent (Graphics g)
{
Graphics2D g2D = (Graphics2D)g;
Rectangle bounds = getBounds();
Insets insets = getInsets();
// Background
// g2D.setColor(GraphUtil.darker(getBackground(), 0.85));
g2D.setColor(getBackground());
Dimension size = getPreferredSize();
g2D.fill3DRect(0+insets.right, 0+insets.top,
size.width-insets.right-insets.left,
size.height-insets.top-insets.bottom, true);
// Paint Text
Color color = getForeground();
g2D.setPaint(color);
Font font = getFont(); // Bold +1
font = new Font(font.getName(), Font.BOLD, font.getSize()+1);
//
AttributedString aString = new AttributedString(m_text);
aString.addAttribute(TextAttribute.FONT, font);
aString.addAttribute(TextAttribute.FOREGROUND, color);
AttributedCharacterIterator iter = aString.getIterator();
//
LineBreakMeasurer measurer = new LineBreakMeasurer(iter, g2D.getFontRenderContext());
float width = getPreferredSize().width - 8; // 4 pt ;
float xPos = 4;
float yPos = 2;
while (measurer.getPosition() < iter.getEndIndex())
{
TextLayout layout = measurer.nextLayout(width);
yPos += layout.getAscent() + layout.getDescent() + layout.getLeading();
layout.draw(g2D, xPos, yPos);
}
// Paint Performance Line
int x = (int)(m_line);
int y = (int)(size.height-insets.bottom);
g2D.setPaint(Color.black);
g2D.drawLine(x, insets.top, x, y);
} // paintComponent
*/
// end vpj-cd e-evolution
/**************************************************************************
* Adds an <code>ActionListener</code> to the indicator.
* @param l the <code>ActionListener</code> to be added
*/
public void addActionListener(ActionListener l)
{
if (l != null)
listenerList.add(ActionListener.class, l);
} // addActionListener
/**
* Removes an <code>ActionListener</code> from the indicator.
* @param l the listener to be removed
*/
public void removeActionListener(ActionListener l)
{
if (l != null)
listenerList.remove(ActionListener.class, l);
} // removeActionListener
/**
* Returns an array of all the <code>ActionListener</code>s added
* to this indicator with addActionListener().
*
* @return all of the <code>ActionListener</code>s added or an empty
* array if no listeners have been added
*/
public ActionListener[] getActionListeners()
{
return (ActionListener[])(listenerList.getListeners(ActionListener.class));
} // getActionListeners
} // updateData
/**
* Notifies all listeners that have registered interest for
* notification on this event type. The event instance
* is lazily created using the <code>event</code>
* parameter.
*
* @param event the <code>ActionEvent</code> object
* @see EventListenerList
*/
protected void fireActionPerformed(MouseEvent event)
{
// Guaranteed to return a non-null array
ActionListener[] listeners = getActionListeners();
ActionEvent e = null;
// Process the listeners first to last
for (int i = 0; i < listeners.length; i++)
{
// Lazily create the event:
if (e == null)
e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED,
"pi", event.getWhen(), event.getModifiers());
listeners[i].actionPerformed(e);
}
} // fireActionPerformed
/**************************************************************************
* Mouse Clicked
* @param e mouse event
*/
public void mouseClicked (MouseEvent e)
{
/***************************************************************************
* Get Preferred Size
*
* @return size
*/
/*
* vpj-cd e-evolution public Dimension getPreferredSize() { if
* (!isPreferredSizeSet()) { double width = s_width100; if
* (m_goal.getPercent() > 100) { width = width *
* m_goal.getGoalPerformanceDouble(); width = Math.min(width, s_widthMax); }
* Dimension size = new Dimension(); size.setSize(width, s_height);
* setPreferredSize(size); setMinimumSize(size); setMaximumSize(size); }
* return super.getPreferredSize(); } // getPreferredSize // end vpj-cd
*
* /** Paint Component @param g Graphics
*/
/*
* vpj-cd e-evolution protected void paintComponent (Graphics g) {
* Graphics2D g2D = (Graphics2D)g; Rectangle bounds = getBounds(); Insets
* insets = getInsets(); // Background //
* g2D.setColor(GraphUtil.darker(getBackground(), 0.85));
* g2D.setColor(getBackground()); Dimension size = getPreferredSize();
* g2D.fill3DRect(0+insets.right, 0+insets.top,
* size.width-insets.right-insets.left,
* size.height-insets.top-insets.bottom, true);
* // Paint Text Color color = getForeground(); g2D.setPaint(color); Font
* font = getFont(); // Bold +1 font = new Font(font.getName(), Font.BOLD,
* font.getSize()+1); // AttributedString aString = new
* AttributedString(m_text); aString.addAttribute(TextAttribute.FONT, font);
* aString.addAttribute(TextAttribute.FOREGROUND, color);
* AttributedCharacterIterator iter = aString.getIterator(); //
* LineBreakMeasurer measurer = new LineBreakMeasurer(iter,
* g2D.getFontRenderContext()); float width = getPreferredSize().width - 8; //
* 4 pt ; float xPos = 4; float yPos = 2; while (measurer.getPosition() <
* iter.getEndIndex()) { TextLayout layout = measurer.nextLayout(width);
* yPos += layout.getAscent() + layout.getDescent() + layout.getLeading();
* layout.draw(g2D, xPos, yPos); }
* // Paint Performance Line int x = (int)(m_line); int y =
* (int)(size.height-insets.bottom); g2D.setPaint(Color.black);
* g2D.drawLine(x, insets.top, x, y); } // paintComponent
*/
// end vpj-cd e-evolution
/***************************************************************************
* Adds an <code>ActionListener</code> to the indicator.
*
* @param l
* the <code>ActionListener</code> to be added
*/
public void addActionListener(ActionListener l) {
if (l != null)
listenerList.add(ActionListener.class, l);
} // addActionListener
/**
* Removes an <code>ActionListener</code> from the indicator.
*
* @param l
* the listener to be removed
*/
public void removeActionListener(ActionListener l) {
if (l != null)
listenerList.remove(ActionListener.class, l);
} // removeActionListener
/**
* Returns an array of all the <code>ActionListener</code>s added to this
* indicator with addActionListener().
*
* @return all of the <code>ActionListener</code>s added or an empty
* array if no listeners have been added
*/
public ActionListener[] getActionListeners() {
return (ActionListener[]) (listenerList
.getListeners(ActionListener.class));
} // getActionListeners
/**
* Notifies all listeners that have registered interest for notification on
* this event type. The event instance is lazily created using the
* <code>event</code> parameter.
*
* @param event
* the <code>ActionEvent</code> object
* @see EventListenerList
*/
protected void fireActionPerformed(MouseEvent event) {
// Guaranteed to return a non-null array
ActionListener[] listeners = getActionListeners();
ActionEvent e = null;
// Process the listeners first to last
for (int i = 0; i < listeners.length; i++) {
// Lazily create the event:
if (e == null)
e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "pi",
event.getWhen(), event.getModifiers());
listeners[i].actionPerformed(e);
}
} // fireActionPerformed
/***************************************************************************
* Mouse Clicked
*
* @param e
* mouse event
*/
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() > 1)
fireActionPerformed(e);
if (SwingUtilities.isRightMouseButton(e))
popupMenu.show((Component)e.getSource(), e.getX(), e.getY());
} // mouseClicked
popupMenu.show((Component) e.getSource(), e.getX(), e.getY());
} // mouseClicked
public void mousePressed (MouseEvent e)
{
public void mousePressed(MouseEvent e) {
}
public void mouseReleased (MouseEvent e)
{
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered (MouseEvent e)
{
public void mouseEntered(MouseEvent e) {
}
public void mouseExited (MouseEvent e)
{
public void mouseExited(MouseEvent e) {
}
/**
* Action Listener.
* Update Display
* @param e event
* Action Listener. Update Display
*
* @param e
* event
*/
public void actionPerformed (ActionEvent e)
{
if (e.getSource() == mRefresh)
{
public void actionPerformed(ActionEvent e) {
if (e.getSource() == mRefresh) {
m_goal.updateGoal(true);
updateDisplay();
//
@ -453,6 +451,6 @@ public class PerformanceIndicator extends JPanel
else
repaint();
}
} // actionPerformed
} // PerformanceIndicator
} // actionPerformed
} // PerformanceIndicator