/******************************************************************************* * Copyright (c) 2000, 2008 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 *******************************************************************************/ package org.eclipse.ui.forms.widgets; //import org.eclipse.swt.SWT; //import org.eclipse.swt.graphics.Color; //import org.eclipse.swt.graphics.GC; //import org.eclipse.swt.graphics.Point; import org.eclipse.swt.widgets.Composite; /** * A custom selectable control that can be used to control areas that can be * expanded or collapsed. The control control can be toggled between selected * and deselected state with a mouse or by pressing 'Enter' while the control * has focus. * <p> * The control is rendered as a triangle that points to the right in the * collapsed and down in the expanded state. Triangle color can be changed. * <p> * <dl> * <dt><b>Styles:</b></dt> * <dd>None</dd> * </dl> * * @see TreeNode * @since 1.0 */ public class Twistie extends ToggleHyperlink { // RAP [rh] Unused code: was used by paint code // private static final int[] onPoints = { 0, 2, 8, 2, 4, 6 }; // private static final int[] offPoints = { 2, -1, 2, 8, 6, 4 }; /** * Creates a control in a provided composite. * * @param parent * the parent * @param style * the style */ public Twistie(Composite parent, int style) { super(parent, style); innerWidth = 9; innerHeight = 9; } // RAP [rh] Disabled because of disabled AbstractHyperlink#paintHyperlink() // /* // * @see SelectableControl#paint(GC) // */ // protected void paintHyperlink(GC gc) { // Color bg; // if (!isEnabled()) // bg = getDisplay().getSystemColor(SWT.COLOR_WIDGET_NORMAL_SHADOW); // else if (hover && getHoverDecorationColor() != null) // bg = getHoverDecorationColor(); // else if (getDecorationColor() != null) // bg = getDecorationColor(); // else // bg = getForeground(); // gc.setBackground(bg); // int[] data; // Point size = getSize(); // int x = (size.x - 9) / 2; // int y = (size.y - 9) / 2; // if (isExpanded()) // data = translate(onPoints, x, y); // else // data = translate(offPoints, x, y); // gc.fillPolygon(data); // gc.setBackground(getBackground()); // } // // private int[] translate(int[] data, int x, int y) { // int[] target = new int[data.length]; // for (int i = 0; i < data.length; i += 2) { // target[i] = data[i] + x; // } // for (int i = 1; i < data.length; i += 2) { // target[i] = data[i] + y; // } // return target; // } /* * (non-Javadoc) * * @see org.eclipse.swt.widgets.Control#setEnabled(boolean) */ public void setEnabled(boolean enabled) { super.setEnabled(enabled); redraw(); } }