You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by no...@apache.org on 2009/11/11 12:51:28 UTC
svn commit: r834844 - in
/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk: Meter.java
MeterListener.java skin/terra/TerraMeterSkin.java
Author: noelgrandin
Date: Wed Nov 11 11:51:28 2009
New Revision: 834844
URL: http://svn.apache.org/viewvc?rev=834844&view=rev
Log:
PIVOT-26: Add orientation to Meter component
Modified:
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Meter.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MeterListener.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMeterSkin.java
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Meter.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Meter.java?rev=834844&r1=834843&r2=834844&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Meter.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Meter.java Wed Nov 11 11:51:28 2009
@@ -25,6 +25,13 @@
private static class MeterListenerList extends ListenerList<MeterListener>
implements MeterListener {
@Override
+ public void orientationChanged(Meter meter) {
+ for (MeterListener listener : this) {
+ listener.orientationChanged(meter);
+ }
+ }
+
+ @Override
public void percentageChanged(Meter meter, double oldPercentage) {
for (MeterListener listener : this) {
listener.percentageChanged(meter, oldPercentage);
@@ -41,9 +48,15 @@
private double percentage = 0.0;
private String text = null;
+ private Orientation orientation = null;
private MeterListenerList meterListeners = new MeterListenerList();
public Meter() {
+ this(Orientation.HORIZONTAL);
+ }
+
+ public Meter(Orientation orientation) {
+ this.orientation = orientation;
installThemeSkin(Meter.class);
}
@@ -75,6 +88,29 @@
meterListeners.textChanged(this, previousText);
}
+ public Orientation getOrientation() {
+ return orientation;
+ }
+
+ public void setOrientation(Orientation orientation) {
+ if (orientation == null) {
+ throw new IllegalArgumentException("orientation is null.");
+ }
+
+ if (this.orientation != orientation) {
+ this.orientation = orientation;
+ meterListeners.orientationChanged(this);
+ }
+ }
+
+ public void setOrientation(String orientation) {
+ if (orientation == null) {
+ throw new IllegalArgumentException("orientation is null.");
+ }
+
+ setOrientation(Orientation.valueOf(orientation.toUpperCase()));
+ }
+
public ListenerList<MeterListener> getMeterListeners() {
return meterListeners;
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MeterListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MeterListener.java?rev=834844&r1=834843&r2=834844&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MeterListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/MeterListener.java Wed Nov 11 11:51:28 2009
@@ -20,6 +20,19 @@
* Meter listener interface.
*/
public interface MeterListener {
+
+ public static class Adapter implements MeterListener {
+ @Override
+ public void percentageChanged(Meter meter, double previousPercentage) {
+ }
+ @Override
+ public void textChanged(Meter meter, String previousText) {
+ }
+ @Override
+ public void orientationChanged(Meter meter) {
+ }
+ }
+
/**
* Called when a meter's percentage value has changed.
*
@@ -35,4 +48,12 @@
* @param previousText
*/
public void textChanged(Meter meter, String previousText);
+
+ /**
+ * Called when a sliders's orientation has changed.
+ *
+ * @param meter
+ * The source of the event.
+ */
+ public void orientationChanged(Meter meter);
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMeterSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMeterSkin.java?rev=834844&r1=834843&r2=834844&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMeterSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraMeterSkin.java Wed Nov 11 11:51:28 2009
@@ -24,6 +24,7 @@
import java.awt.Shape;
import java.awt.font.FontRenderContext;
import java.awt.font.LineMetrics;
+import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import org.apache.pivot.collections.Dictionary;
@@ -80,6 +81,25 @@
@Override
public int getPreferredWidth(int height) {
Meter meter = (Meter)getComponent();
+ if (meter.getOrientation()==Orientation.HORIZONTAL) {
+ return internalGetPreferredWidth();
+ } else {
+ return internalGetPreferredHeight();
+ }
+ }
+
+ @Override
+ public int getPreferredHeight(int width) {
+ Meter meter = (Meter)getComponent();
+ if (meter.getOrientation()==Orientation.HORIZONTAL) {
+ return internalGetPreferredHeight();
+ } else {
+ return internalGetPreferredWidth();
+ }
+ }
+
+ private int internalGetPreferredWidth() {
+ Meter meter = (Meter)getComponent();
String text = meter.getText();
int preferredWidth;
@@ -98,8 +118,7 @@
return preferredWidth;
}
- @Override
- public int getPreferredHeight(int width) {
+ private int internalGetPreferredHeight() {
Meter meter = (Meter)getComponent();
String text = meter.getText();
@@ -137,7 +156,11 @@
preferredWidth = Math.max(preferredWidth, DEFAULT_WIDTH);
preferredHeight = Math.max(preferredHeight, DEFAULT_HEIGHT);
- return new Dimensions(preferredWidth, preferredHeight);
+ if (meter.getOrientation()==Orientation.HORIZONTAL) {
+ return new Dimensions(preferredWidth, preferredHeight);
+ } else {
+ return new Dimensions(preferredHeight, preferredWidth);
+ }
}
@Override
@@ -145,6 +168,11 @@
int baseline = -1;
Meter meter = (Meter)getComponent();
+
+ if (meter.getOrientation()==Orientation.VERTICAL) {
+ return -1;
+ }
+
String text = meter.getText();
if (text != null
@@ -170,7 +198,6 @@
int width = getWidth();
int height = getHeight();
- int meterStop = (int)(meter.getPercentage() * width);
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
@@ -185,6 +212,19 @@
RenderingHints.VALUE_FRACTIONALMETRICS_ON);
}
+ if (meter.getOrientation() == Orientation.HORIZONTAL) {
+ drawMeter(meter, graphics, width, height);
+ } else {
+ AffineTransform oldTransform = graphics.getTransform();
+ graphics.rotate(Math.PI / 2d);
+ graphics.translate(0, -width);
+ drawMeter(meter, graphics, height, width);
+ graphics.setTransform(oldTransform);
+ }
+ }
+
+ private void drawMeter(Meter meter, Graphics2D graphics, int width, int height) {
+ int meterStop = (int)(meter.getPercentage() * width);
// Paint the interior fill
graphics.setPaint(new GradientPaint(0, 0, TerraTheme.brighten(fillColor),
0, height, TerraTheme.darken(fillColor)));
@@ -372,4 +412,15 @@
public void textChanged(Meter meter, String previousText) {
invalidateComponent();
}
+
+ /**
+ * Listener for meter orientation changes.
+ *
+ * @param meter
+ * The source of the event.
+ */
+ @Override
+ public void orientationChanged(Meter meter) {
+ invalidateComponent();
+ }
}