/******************************************************************************* | |
* Copyright (c) 2015, 2016 Red Hat Inc. | |
* 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: | |
* Red Hat Inc - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.swt.snippets; | |
import java.util.concurrent.atomic.*; | |
import org.eclipse.swt.*; | |
import org.eclipse.swt.layout.*; | |
import org.eclipse.swt.widgets.*; | |
/** | |
* Buttons with various arrows and methods that affect arrow directions. | |
* | |
* For a list of all SWT example snippets see | |
* http://www.eclipse.org/swt/snippets/ | |
*/ | |
public class Snippet366 { | |
static Display display = new Display(); | |
static Shell shell = new Shell(display); | |
public static void main (String [] args) { | |
shell.setLayout (new RowLayout ()); | |
makeArrowGroup (); | |
makeAlignGroup (); | |
makeOrientationGroup (); | |
shell.pack (); | |
shell.open (); | |
while (!shell.isDisposed ()) { | |
if (!display.readAndDispatch ()) | |
display.sleep (); | |
} | |
display.dispose (); | |
} | |
private static void makeOrientationGroup () { | |
Group orientationGroup = new Group (shell, SWT.None); | |
orientationGroup.setLayout (new RowLayout ()); | |
orientationGroup.setText ("Orientation group"); | |
final AtomicInteger prevDir = new AtomicInteger (0); | |
final Button alignmentButton = new Button (orientationGroup, SWT.ARROW | SWT.RIGHT); | |
alignmentButton.addListener (SWT.MouseDown, event -> { | |
switch (prevDir.get ()) { | |
case 0: | |
alignmentButton.setOrientation (SWT.LEFT_TO_RIGHT); | |
prevDir.set (1); | |
break; | |
case 1: | |
alignmentButton.setOrientation (SWT.RIGHT_TO_LEFT); | |
prevDir.set (0); | |
break; | |
default: | |
break; | |
} | |
}); | |
} | |
private static void makeAlignGroup () { | |
Group alignGroup = new Group (shell, SWT.None); | |
alignGroup.setLayout (new RowLayout ()); | |
alignGroup.setText ("Alignment group"); | |
final AtomicInteger prevDir = new AtomicInteger (0); | |
final Button alignmentButton = new Button (alignGroup, SWT.ARROW | SWT.UP); | |
alignmentButton.addListener (SWT.MouseDown, event -> { | |
switch (prevDir.get ()) { | |
case 0: | |
alignmentButton.setAlignment (SWT.RIGHT); | |
prevDir.set (1); | |
break; | |
case 1: | |
alignmentButton.setAlignment (SWT.DOWN); | |
prevDir.set (2); | |
break; | |
case 2: | |
alignmentButton.setAlignment (SWT.LEFT); | |
prevDir.set (3); | |
break; | |
case 3: | |
alignmentButton.setAlignment (SWT.UP); | |
prevDir.set (0); | |
default: | |
break; | |
} | |
}); | |
} | |
private static void makeArrowGroup () { | |
Group arrowGroup = new Group(shell, SWT.None); | |
arrowGroup.setText ("Arrow group"); | |
arrowGroup.setLayout (new RowLayout ()); | |
new Button (arrowGroup, SWT.ARROW | SWT.LEFT); | |
new Button (arrowGroup, SWT.ARROW | SWT.RIGHT); | |
new Button (arrowGroup, SWT.ARROW | SWT.UP); | |
new Button (arrowGroup, SWT.ARROW | SWT.DOWN); | |
} | |
} |