diff org.eclipse.draw2d/src/org/eclipse/draw2d/ScrollPane.d @ 12:bc29606a740c

Added dwt-addons in original directory structure of eclipse.org
author Frank Benoit <benoit@tionex.de>
date Sat, 14 Mar 2009 18:23:29 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/org.eclipse.draw2d/src/org/eclipse/draw2d/ScrollPane.d	Sat Mar 14 18:23:29 2009 +0100
@@ -0,0 +1,337 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ * Port to the D programming language:
+ *     Frank Benoit <benoit@tionex.de>
+ *******************************************************************************/
+module org.eclipse.draw2d.ScrollPane;
+
+import java.lang.all;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.Figure;
+import org.eclipse.draw2d.IFigure;
+import org.eclipse.draw2d.ScrollBar;
+import org.eclipse.draw2d.Viewport;
+import org.eclipse.draw2d.ScrollPaneLayout;
+
+/**
+ * A class which implements automatic horizontal and/or vertical scrolling for a single
+ * IFigure child.
+ * <p>
+ * ScrollBar visibilites are represented by integer class constants:
+ * <ul>
+ *      <li>NEVER: Never show the ScrollBar
+ *      <li>AUTOMATIC: Show as needed, when the ScrollPane can no longer contain its view
+ *      <li>ALWAYS: Always show the ScrollBar
+ * </ul>
+ * To use, instantiate a ScrollPane object and call its setView(IFigure) method passing
+ * the IFigure that is desired to have scrolling ability.
+ */
+public class ScrollPane
+    : Figure
+{
+
+/** Constant indicating to never show the ScrollBar */
+public static const int NEVER = 0;
+/** Constant indicating to show as needed, when the ScrollPane can't contain its view */
+public static const int AUTOMATIC = 1;
+/** Constant indicating to always show the ScrollBar */
+public static const int ALWAYS = 2;
+
+/** The viewport being scrolled */
+protected Viewport viewport;
+/** The horizontal scrollbar */
+protected ScrollBar hBar;
+/** The vertical scrollbar */
+protected ScrollBar vBar;
+private int
+    hVisibility = AUTOMATIC,
+    vVisibility = AUTOMATIC;
+
+/**
+ * Constructs a new ScrollPane with a ScrollPaneLayout.
+ *
+ * @since 2.0
+ */
+public this() {
+    setLayoutManager(new ScrollPaneLayout());
+}
+
+/**
+ * Creates a new horizontally oriented ScrollBar and adds it to this ScrollPane.
+ *
+ * @since 2.0
+ */
+protected void createHorizontalScrollBar() {
+    ScrollBar bar = new ScrollBar();
+    bar.setHorizontal(true);
+    setHorizontalScrollBar(bar);
+}
+
+/**
+ * Creates a new Viewport and adds it to this ScrollPane.
+ *
+ * @since 2.0
+ */
+protected void createViewport() {
+    setViewport(new Viewport());
+}
+
+/**
+ * Creates a new vertically oriented ScrollBar and adds it to this ScrollPane.
+ *
+ * @since 2.0
+ */
+protected void createVerticalScrollBar() {
+    ScrollBar bar = new ScrollBar();
+    setVerticalScrollBar(bar);
+}
+
+/**
+ * Returns the ScrollPane's horizontal ScrollBar.
+ *
+ * @return the horizontal scrollbar
+ * @since 2.0
+ */
+public ScrollBar getHorizontalScrollBar() {
+    if (hBar is null)
+        createHorizontalScrollBar();
+    return hBar;
+}
+
+/**
+ * Returns the visibility of the ScrollPane's horizontal ScrollBar. These are represented
+ * by the integer class constants {@link #NEVER}, {@link #AUTOMATIC}, and {@link #ALWAYS}.
+ * The default is {@link #AUTOMATIC}.
+ *
+ * @return the visiblity of the horizontal scrollbar
+ * @since 2.0
+ */
+public int getHorizontalScrollBarVisibility() {
+    return hVisibility;
+}
+
+/**
+ * Returns the ScrollPane's vertical ScrollBar.
+ *
+ * @return teh vertical scrollbar
+ * @since 2.0
+ */
+public ScrollBar getVerticalScrollBar() {
+    if (vBar is null)
+        createVerticalScrollBar();
+    return vBar;
+}
+
+/**
+ * Returns the visibility of the ScrollPane's vertical ScrollBar. These are represented
+ * by the integer class constants {@link #NEVER}, {@link #AUTOMATIC}, and {@link #ALWAYS}.
+ * The default is {@link #AUTOMATIC}.
+ *
+ * @return the visibility of the vertical scrollbar
+ * @since 2.0
+ */
+public int getVerticalScrollBarVisibility() {
+    return vVisibility;
+}
+
+/**
+ * Returns the contents of the viewport.
+ * @return the contents of the viewport
+ */
+public IFigure getContents() {
+    return getView();
+}
+
+/**
+ * Returns the ScrollPane's view. The view is the IFigure that is the contents of the
+ * ScrollPane.
+ * @return the contents
+ * @deprecated use getContents()
+ * @since 2.0
+ */
+public IFigure getView() {
+    return getViewport().getContents();
+}
+
+/**
+ * Returns the ScrollPane's {@link Viewport}.
+ *
+ * @return the viewport
+ * @since 2.0
+ */
+public Viewport getViewport() {
+    if (viewport is null)
+        createViewport();
+    return viewport;
+}
+
+/**
+ * Returns true because ScrollPanes are always opaque.
+ * @see IFigure#isOpaque()
+ */
+public bool isOpaque() {
+    return true;
+}
+
+/**
+ * Scrolls the Scrollpane horizontally x pixels from its left-most position.
+ *
+ * @param x the amount to scroll horizontally
+ * @since 2.0
+ */
+public void scrollHorizontalTo(int x) {
+    getViewport().setHorizontalLocation(x);
+}
+
+/**
+ * Scrolls the Scrollpane horizontally from its left-most position by location.x pixels
+ * and vertically from its top-most position by location.y pixels.
+ *
+ * @param location the point to scroll to
+ * @since 2.0
+ */
+public void scrollTo(Point location) {
+    scrollHorizontalTo(location.x);
+    scrollVerticalTo(location.y);
+}
+
+/**
+ * Scrolls the Scrollpane vertically y pixels from its top-most position.
+ *
+ * @param y the amount to scroll vertically
+ * @since 2.0
+ */
+public void scrollVerticalTo(int y) {
+    getViewport().setVerticalLocation(y);
+}
+
+/**
+ * Sets the contents of the current viewport.
+ * @param figure the contents of the viewport
+ */
+public void setContents(IFigure figure) {
+    setView(figure);
+}
+
+/**
+ * Sets the ScrollPane's horizontal ScrollBar to the passed ScrollBar.
+ *
+ * @param bar the new horizontal scrollbar
+ * @since 2.0
+ */
+public void setHorizontalScrollBar(ScrollBar bar) {
+    if (hBar !is null) {
+        remove(hBar);
+        hBar.getRangeModel().removePropertyChangeListener(hBar);
+    }
+    hBar = bar;
+    if (hBar !is null) {
+        add(hBar);
+        hBar.setRangeModel(getViewport().getHorizontalRangeModel());
+    }
+}
+
+/**
+ * Sets the horizontal ScrollBar visibility of the ScrollPane to the passed value. These
+ * are represented by the integer class constants {@link #NEVER}, {@link #AUTOMATIC}, and
+ * {@link #ALWAYS}. The default is {@link #AUTOMATIC}.
+ *
+ * @param v the new horizontal visibility
+ * @since 2.0
+ */
+public void setHorizontalScrollBarVisibility(int v) {
+    if (hVisibility is v)
+        return;
+    hVisibility = v;
+    revalidate();
+}
+
+/**
+ * Sets both the horizontal and vertical ScrollBar visibilities of the ScrollPane to the
+ * passed value. These are represented by the integer class constants {@link #NEVER},
+ * {@link #AUTOMATIC}, and {@link #ALWAYS}. The default is {@link #AUTOMATIC}.
+ *
+ * @param v the new vertical and horizontal visibility
+ * @since 2.0
+ */
+public void setScrollBarVisibility(int v) {
+    setHorizontalScrollBarVisibility(v);
+    setVerticalScrollBarVisibility(v);
+}
+
+/**
+ * Sets the ScrollPane's vertical ScrollBar to the passed Scrollbar.
+ *
+ * @param bar the new vertical scrollbar
+ * @since 2.0
+ */
+public void setVerticalScrollBar(ScrollBar bar) {
+    if (vBar !is null) {
+        remove(vBar);
+        vBar.getRangeModel().removePropertyChangeListener(vBar);
+    }
+    vBar = bar;
+    if (vBar !is null) {
+        add(vBar);
+        vBar.setRangeModel(getViewport().getVerticalRangeModel());
+    }
+}
+
+/**
+ * Sets the vertical ScrollBar visibility of the ScrollPane to the passed value. These are
+ * represented by the integer class constants {@link #NEVER}, {@link #AUTOMATIC}, and
+ * {@link #ALWAYS}. The default is {@link #AUTOMATIC}.
+ *
+ * @param v the new vertical scrollbar visibility
+ * @since 2.0
+ */
+public void setVerticalScrollBarVisibility(int v) {
+    if (vVisibility is v)
+        return;
+    vVisibility = v;
+    revalidate();
+}
+
+/**
+ * Sets the ScrollPane's view to the passed IFigure. The view is the top-level IFigure
+ * which represents the contents of the ScrollPane.
+ * @param figure the new contents
+ * @deprecated call setContents(IFigure) instead
+ * @since 2.0
+ */
+public void setView(IFigure figure) {
+    getViewport().setContents(figure);
+}
+
+/**
+ * Sets the ScrollPane's Viewport to the passed value.
+ *
+ * @param vp the new viewport
+ * @since 2.0
+ */
+public void setViewport(Viewport vp) {
+    if (viewport !is null)
+        remove(viewport);
+    viewport = vp;
+    if (vp !is null)
+        add(vp, 0);
+}
+
+/**
+ * @see IFigure#validate()
+ */
+public void validate() {
+    super.validate();
+    getHorizontalScrollBar().validate();
+    getVerticalScrollBar().validate();
+}
+
+}