package org.tizen.emulator.manager.ui.renewal.dialog;
+import java.util.ArrayList;
+import java.util.List;
+
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
-import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.tizen.emulator.manager.renewal.resources.FontResources;
import org.tizen.emulator.manager.ui.renewal.MainDialog;
import org.tizen.emulator.manager.ui.renewal.widgets.CustomScrolledComposite;
+import org.tizen.emulator.manager.ui.renewal.widgets.GrayButton;
public class MessageBox {
private final int MIN_WIDTH = 300;
private Composite titleComp = null;
+ private final List<GrayButton> buttonList = new ArrayList<GrayButton>();
+
// TODO: Icon SWT.ICON_ERROR ...
protected static final Shell shell;
static {
// need contentsBox size
dialog.setBackground(ColorResources.MESSAGE_BOX_BG.getColor());
dialog.setBounds(computeDialogBounds());
+ dialog.setBackgroundMode(SWT.INHERIT_FORCE);
// need dialog size
makeButtons();
titleComp.setBounds(0, 0, width, TITLE_HEIGHT);
scrolledList.setBounds(0, TITLE_HEIGHT, width, height - TITLE_HEIGHT - BOTTOM_HEIGHT);
+
+ addTraverseListener();
+ }
+
+ private void selectNext(GrayButton button, boolean isLeftToRight) {
+ for (int i = 0 ; i < buttonList.size() ; i++) {
+ GrayButton btn = buttonList.get(i);
+ if (btn == button) {
+ int nextIndex = 0;
+ if (isLeftToRight) {
+ nextIndex = (i < buttonList.size() - 1) ?
+ i+1 : 0;
+
+ } else { // right to left
+ nextIndex = (i == 0) ?
+ buttonList.size() - 1 : i-1;
+ }
+
+ buttonList.get(i).setSelected(false);
+ buttonList.get(nextIndex).setSelected(true);
+ buttonList.get(nextIndex).setFocus();
+ break;
+ }
+ }
+
+ }
+
+
+ private void addTraverseListener() {
+ Listener traverseListener = new Listener() {
+ @Override
+ public void handleEvent(Event event) {
+
+ switch (event.detail) {
+ case SWT.TRAVERSE_RETURN:
+ if (event.widget instanceof GrayButton) {
+ event.widget.notifyListeners(SWT.Selection, event);
+ }
+ break;
+
+ case SWT.TRAVERSE_ARROW_PREVIOUS:
+ case SWT.TRAVERSE_TAB_PREVIOUS:
+ if (event.widget instanceof GrayButton) {
+ selectNext((GrayButton)event.widget, false);
+ }
+ break;
+
+ case SWT.TRAVERSE_ARROW_NEXT:
+ case SWT.TRAVERSE_TAB_NEXT:
+ if (event.widget instanceof GrayButton) {
+ selectNext((GrayButton)event.widget, true);
+ }
+ break;
+
+ default:
+ // don't care another event
+ }
+ }
+ };
+
+ for (GrayButton button : buttonList) {
+ button.addListener(SWT.Traverse, traverseListener);
+ }
}
private void makeTitleLabel() {
contentsHeight = contentsBox.getSize().y;
}
- private int buttonCount = 1;
private void makeButton(String text, final int buttonType) {
if ((style & buttonType) == buttonType) {
- Button button = new Button(dialog, SWT.PUSH);
+ GrayButton button = new GrayButton(dialog, SWT.PUSH);
button.setFont(FontResources.GRAY_BTN_FONT.getFont());
button.setText(text);
button.setBackground(null);
}
});
- button.setBounds(width - (BUTTON_WIDTH + BUTTON_SPACING) * buttonCount,
+ buttonList.add(0, button); // for traverse
+ button.setBounds(width - (BUTTON_WIDTH + BUTTON_SPACING) * buttonList.size(),
height - (BOTTOM_HEIGHT + BUTTON_HEIGHT)/2,
BUTTON_WIDTH, BUTTON_HEIGHT);
- buttonCount++;
+
+ if (buttonType == SWT.OK || buttonType == SWT.YES) {
+ button.setSelected(true);
+ button.setFocus();
+ }
}
}
private void makeButtons() {
- buttonCount = 1;
makeButton("Yes", SWT.YES);
makeButton("Ok", SWT.OK);
makeButton("No", SWT.NO);
package org.tizen.emulator.manager.ui.renewal.widgets;
+import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
import org.tizen.emulator.manager.renewal.resources.ColorResources;
import org.tizen.emulator.manager.renewal.resources.FontResources;
import org.tizen.emulator.manager.renewal.resources.ImageResources;
super(parent, style);
initFont();
initNinePatchResourceMap();
+ setMouseEnterListener();
+ }
+
+ public void setSelected(boolean selected) {
+ if (selected) {
+ state = WSTATE.PUSH;
+ } else {
+ state = WSTATE.NORMAL;
+ }
+ redraw();
+ }
+
+
+ private void setMouseEnterListener() {
+ Listener mouseListener = new Listener() {
+
+ @Override
+ public void handleEvent(Event event) {
+
+ if (event.type == SWT.MouseEnter) {
+ state = WSTATE.HOVER;
+ redraw();
+ }
+ }
+ };
+
+ setMouseListener(SWT.MouseEnter, mouseListener);
}
protected void initFont() {