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/09 14:27:12 UTC
svn commit: r834055 - in /incubator/pivot/trunk/wtk:
src/org/apache/pivot/wtk/ src/org/apache/pivot/wtk/skin/terra/
test/org/apache/pivot/wtk/test/
Author: noelgrandin
Date: Mon Nov 9 13:27:11 2009
New Revision: 834055
URL: http://svn.apache.org/viewvc?rev=834055&view=rev
Log:
PIVOT-27 Add orientation to Slider component
Modified:
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Slider.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/SliderListener.java
incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSliderSkin.java
incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/SliderTest.java
incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/slider_test.wtkx
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Slider.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Slider.java?rev=834055&r1=834054&r2=834055&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Slider.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/Slider.java Mon Nov 9 13:27:11 2009
@@ -26,6 +26,13 @@
private static class SliderListenerList extends ListenerList<SliderListener>
implements SliderListener {
@Override
+ public void orientationChanged(Slider slider) {
+ for (SliderListener listener : this) {
+ listener.orientationChanged(slider);
+ }
+ }
+
+ @Override
public void rangeChanged(Slider slider, int previousStart, int previousEnd) {
for (SliderListener listener : this) {
listener.rangeChanged(slider, previousStart, previousEnd);
@@ -46,6 +53,7 @@
private int start = DEFAULT_START;
private int end = DEFAULT_END;
private int value = DEFAULT_VALUE;
+ private Orientation orientation = null;
private SliderListenerList sliderListeners = new SliderListenerList();
private SliderValueListenerList sliderValueListeners = new SliderValueListenerList();
@@ -55,9 +63,15 @@
public static final int DEFAULT_VALUE = 0;
public Slider() {
- installThemeSkin(Slider.class);
+ this(Orientation.HORIZONTAL);
}
+ public Slider(Orientation orientation) {
+ this.orientation = orientation;
+
+ installThemeSkin(Slider.class);
+ }
+
public int getStart() {
return start;
}
@@ -149,6 +163,29 @@
}
}
+ 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;
+ sliderListeners.orientationChanged(this);
+ }
+ }
+
+ public void setOrientation(String orientation) {
+ if (orientation == null) {
+ throw new IllegalArgumentException("orientation is null.");
+ }
+
+ setOrientation(Orientation.valueOf(orientation.toUpperCase()));
+ }
+
public ListenerList<SliderListener> getSliderListeners() {
return sliderListeners;
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/SliderListener.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/SliderListener.java?rev=834055&r1=834054&r2=834055&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/SliderListener.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/SliderListener.java Mon Nov 9 13:27:11 2009
@@ -28,4 +28,13 @@
* @param previousEnd
*/
public void rangeChanged(Slider slider, int previousStart, int previousEnd);
+
+ /**
+ * Called when a sliders's orientation has changed.
+ *
+ * @param slider
+ * The source of the event.
+ */
+ public void orientationChanged(Slider slider);
+
}
Modified: incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSliderSkin.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSliderSkin.java?rev=834055&r1=834054&r2=834055&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSliderSkin.java (original)
+++ incubator/pivot/trunk/wtk/src/org/apache/pivot/wtk/skin/terra/TerraSliderSkin.java Mon Nov 9 13:27:11 2009
@@ -35,7 +35,6 @@
import org.apache.pivot.wtk.skin.ComponentSkin;
import org.apache.pivot.wtk.skin.SliderSkin;
-
/**
* Terra slider skin.
*/
@@ -113,30 +112,56 @@
boolean consumed = super.mouseMove(component, x, y);
if (Mouse.getCapturer() == component) {
- Slider slider = (Slider)TerraSliderSkin.this.getComponent();
- int sliderWidth = slider.getWidth();
- int thumbWidth = thumb.getWidth();
-
- Point sliderLocation = thumb.mapPointToAncestor(slider, x, y);
- int sliderX = sliderLocation.x;
-
- int minX = dragOffset.x;
- if (sliderX < minX) {
- sliderX = minX;
- }
+ Slider slider = (Slider) TerraSliderSkin.this.getComponent();
+ if (slider.getOrientation() == Orientation.HORIZONTAL) {
+ int sliderWidth = slider.getWidth();
+ int thumbWidth = thumb.getWidth();
+
+ Point sliderLocation = thumb.mapPointToAncestor(slider, x, y);
+ int sliderX = sliderLocation.x;
+
+ int minX = dragOffset.x;
+ if (sliderX < minX) {
+ sliderX = minX;
+ }
+
+ int maxX = (sliderWidth - thumbWidth) + dragOffset.x;
+ if (sliderX > maxX) {
+ sliderX = maxX;
+ }
+
+ float ratio = (float) (sliderX - dragOffset.x) / (sliderWidth - thumbWidth);
+
+ int start = slider.getStart();
+ int end = slider.getEnd();
+
+ int value = (int) (start + (end - start) * ratio);
+ slider.setValue(value);
+ } else {
+ int sliderHeight = slider.getHeight();
+ int thumbHeight = thumb.getHeight();
+
+ Point sliderLocation = thumb.mapPointToAncestor(slider, x, y);
+ int sliderY = sliderLocation.y;
+
+ int minY = dragOffset.y;
+ if (sliderY < minY) {
+ sliderY = minY;
+ }
+
+ int maxY = (sliderHeight - thumbHeight) + dragOffset.y;
+ if (sliderY > maxY) {
+ sliderY = maxY;
+ }
- int maxX = (sliderWidth - thumbWidth) + dragOffset.x;
- if (sliderX > maxX) {
- sliderX = maxX;
- }
+ float ratio = (float) (sliderY - dragOffset.y) / (sliderHeight - thumbHeight);
- float ratio = (float)(sliderX - dragOffset.x) / (sliderWidth - thumbWidth);
+ int start = slider.getStart();
+ int end = slider.getEnd();
- int start = slider.getStart();
- int end = slider.getEnd();
-
- int value = (int)(start + (end - start) * ratio);
- slider.setValue(value);
+ int value = (int) (start + (end - start) * ratio);
+ slider.setValue(value);
+ }
}
return consumed;
@@ -196,7 +221,7 @@
public boolean keyPressed(Component component, int keyCode, Keyboard.KeyLocation keyLocation) {
boolean consumed = super.keyPressed(component, keyCode, keyLocation);
- Slider slider = (Slider)TerraSliderSkin.this.getComponent();
+ Slider slider = (Slider) TerraSliderSkin.this.getComponent();
int start = slider.getStart();
int end = slider.getEnd();
int length = end - start;
@@ -234,7 +259,7 @@
public static final int MINIMUM_THUMB_HEIGHT = 4;
public TerraSliderSkin() {
- TerraTheme theme = (TerraTheme)Theme.getTheme();
+ TerraTheme theme = (TerraTheme) Theme.getTheme();
trackColor = theme.getColor(6);
trackWidth = 2;
@@ -251,18 +276,30 @@
public void install(Component component) {
super.install(component);
- Slider slider = (Slider)component;
+ Slider slider = (Slider) component;
slider.add(thumb);
}
@Override
public int getPreferredWidth(int height) {
- return DEFAULT_WIDTH;
+ Slider slider = (Slider) getComponent();
+
+ if (slider.getOrientation() == Orientation.HORIZONTAL) {
+ return DEFAULT_WIDTH;
+ } else {
+ return thumbHeight;
+ }
}
@Override
public int getPreferredHeight(int width) {
- return thumbHeight;
+ Slider slider = (Slider) getComponent();
+
+ if (slider.getOrientation() == Orientation.HORIZONTAL) {
+ return thumbHeight;
+ } else {
+ return DEFAULT_WIDTH;
+ }
}
@Override
@@ -272,7 +309,7 @@
@Override
public void layout() {
- Slider slider = (Slider)getComponent();
+ Slider slider = (Slider) getComponent();
int width = getWidth();
int height = getHeight();
@@ -281,37 +318,46 @@
int end = slider.getEnd();
int value = slider.getValue();
- float ratio = (float)(value - start) / (end - start);
+ float ratio = (float) (value - start) / (end - start);
- thumb.setSize(thumbWidth, thumbHeight);
- thumb.setLocation((int)((width - thumbWidth) * ratio),
- (height - thumbHeight) / 2);
+ if (slider.getOrientation() == Orientation.HORIZONTAL) {
+ thumb.setSize(thumbWidth, thumbHeight);
+ thumb.setLocation((int) ((width - thumbWidth) * ratio), (height - thumbHeight) / 2);
+ } else {
+ thumb.setSize(thumbHeight, thumbWidth);
+ thumb.setLocation((width - thumbHeight) / 2, (int) ((height - thumbWidth) * ratio));
+ }
}
+ private static final BasicStroke dashStroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND,
+ BasicStroke.JOIN_ROUND, 1.0f, new float[] { 0.0f, 2.0f }, 0.0f);
+
@Override
public void paint(Graphics2D graphics) {
super.paint(graphics);
+ Slider slider = (Slider) getComponent();
+
int width = getWidth();
int height = getHeight();
graphics.setColor(trackColor);
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
- GraphicsUtilities.drawLine(graphics, 0, (height - trackWidth) / 2,
- width, Orientation.HORIZONTAL, trackWidth);
+ if (slider.getOrientation() == Orientation.HORIZONTAL) {
+ graphics.fillRect(0, (height - trackWidth) / 2, width, trackWidth);
+ } else {
+ graphics.fillRect((width - trackWidth) / 2, 0, trackWidth, height);
+ }
if (thumb.isFocused()) {
- BasicStroke dashStroke = new BasicStroke(1.0f, BasicStroke.CAP_ROUND,
- BasicStroke.JOIN_ROUND, 1.0f, new float[] {0.0f, 2.0f}, 0.0f);
-
graphics.setStroke(dashStroke);
graphics.setColor(buttonBorderColor);
graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
- graphics.draw(new Rectangle2D.Double(0, 0, width - 1, height - 1));
+ graphics.drawRect(0, 0, width - 1, height - 1);
}
}
@@ -455,6 +501,11 @@
}
@Override
+ public void orientationChanged(Slider slider) {
+ invalidateComponent();
+ }
+
+ @Override
public void valueChanged(Slider slider, int previousValue) {
layout();
}
Modified: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/SliderTest.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/SliderTest.java?rev=834055&r1=834054&r2=834055&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/SliderTest.java (original)
+++ incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/SliderTest.java Mon Nov 9 13:27:11 2009
@@ -29,23 +29,33 @@
public class SliderTest implements Application {
private Window window = null;
- private Slider slider = null;
- private Label valueLabel = null;
+ private Slider slider1 = null;
+ private Slider slider2 = null;
+ private Label valueLabel1 = null;
+ private Label valueLabel2 = null;
@Override
public void startup(Display display, Map<String, String> properties)
throws Exception {
WTKXSerializer wtkxSerializer = new WTKXSerializer();
window = new Window((Component)wtkxSerializer.readObject(getClass().getResource("slider_test.wtkx")));
- slider = (Slider)wtkxSerializer.get("slider");
- slider.getSliderValueListeners().add(new SliderValueListener() {
+ slider1 = (Slider)wtkxSerializer.get("slider1");
+ slider1.getSliderValueListeners().add(new SliderValueListener() {
@Override
public void valueChanged(Slider slider, int previousValue) {
- valueLabel.setText(Integer.toString(slider.getValue()));
+ valueLabel1.setText(Integer.toString(slider.getValue()));
+ }
+ });
+ slider2 = (Slider)wtkxSerializer.get("slider2");
+ slider2.getSliderValueListeners().add(new SliderValueListener() {
+ @Override
+ public void valueChanged(Slider slider, int previousValue) {
+ valueLabel2.setText(Integer.toString(slider.getValue()));
}
});
- valueLabel = (Label)wtkxSerializer.get("valueLabel");
+ valueLabel1 = (Label)wtkxSerializer.get("valueLabel1");
+ valueLabel2 = (Label)wtkxSerializer.get("valueLabel2");
window.setTitle("Slider Test");
window.setMaximized(true);
Modified: incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/slider_test.wtkx
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/slider_test.wtkx?rev=834055&r1=834054&r2=834055&view=diff
==============================================================================
--- incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/slider_test.wtkx (original)
+++ incubator/pivot/trunk/wtk/test/org/apache/pivot/wtk/test/slider_test.wtkx Mon Nov 9 13:27:11 2009
@@ -18,6 +18,8 @@
<BoxPane xmlns:wtkx="http://pivot.apache.org/wtkx"
xmlns="org.apache.pivot.wtk">
- <Slider wtkx:id="slider" range="{start:-100, end:100}" value="0"/>
- <Label wtkx:id="valueLabel"/>
+ <Slider wtkx:id="slider1" range="{start:-100, end:100}" value="0"/>
+ <Label wtkx:id="valueLabel1" text="0"/>
+ <Slider wtkx:id="slider2" range="{start:-100, end:100}" value="0" orientation="vertical"/>
+ <Label wtkx:id="valueLabel2" text="0"/>
</BoxPane>