From 7cf6dd25b27515c03bf90eb4f927123bb246c507 Mon Sep 17 00:00:00 2001 From: "giwoong.kim" Date: Mon, 25 Feb 2013 17:34:18 +0900 Subject: [PATCH] skin: added CustomScrolledComposite added CustomScrolledComposite for key window of general skin. Signed-off-by: GiWoong Kim --- .../resource/images/key-window/scroll_back.png | Bin 0 -> 2791 bytes .../images/key-window/scroll_button_down_hover.png | Bin 0 -> 3186 bytes .../images/key-window/scroll_button_down_nml.png | Bin 0 -> 3181 bytes .../key-window/scroll_button_down_pushed.png | Bin 0 -> 3161 bytes .../images/key-window/scroll_button_up_hover.png | Bin 0 -> 3184 bytes .../images/key-window/scroll_button_up_nml.png | Bin 0 -> 3186 bytes .../images/key-window/scroll_button_up_pushed.png | Bin 0 -> 3165 bytes .../resource/images/key-window/scroll_thumb.png | Bin 0 -> 2957 bytes .../tizen/emulator/skin/custom/CustomButton.java | 4 +- .../emulator/skin/custom/CustomScrollBar.java | 226 +++++++++++++++++++++ .../skin/custom/CustomScrolledComposite.java | 178 ++++++++++++++++ .../skin/custom/CustomScrolledCompositeLayout.java | 101 +++++++++ .../org/tizen/emulator/skin/custom/KeyWindow.java | 110 +++++++--- .../tizen/emulator/skin/image/ImageRegistry.java | 11 +- 14 files changed, 602 insertions(+), 28 deletions(-) create mode 100644 tizen/src/skin/client/resource/images/key-window/scroll_back.png create mode 100644 tizen/src/skin/client/resource/images/key-window/scroll_button_down_hover.png create mode 100644 tizen/src/skin/client/resource/images/key-window/scroll_button_down_nml.png create mode 100644 tizen/src/skin/client/resource/images/key-window/scroll_button_down_pushed.png create mode 100644 tizen/src/skin/client/resource/images/key-window/scroll_button_up_hover.png create mode 100644 tizen/src/skin/client/resource/images/key-window/scroll_button_up_nml.png create mode 100644 tizen/src/skin/client/resource/images/key-window/scroll_button_up_pushed.png create mode 100644 tizen/src/skin/client/resource/images/key-window/scroll_thumb.png create mode 100644 tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrollBar.java create mode 100644 tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrolledComposite.java create mode 100644 tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrolledCompositeLayout.java diff --git a/tizen/src/skin/client/resource/images/key-window/scroll_back.png b/tizen/src/skin/client/resource/images/key-window/scroll_back.png new file mode 100644 index 0000000000000000000000000000000000000000..5f8c37780578a37b8b7f2744cb0461a833649826 GIT binary patch literal 2791 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 literal 0 HcmV?d00001 diff --git a/tizen/src/skin/client/resource/images/key-window/scroll_button_up_hover.png b/tizen/src/skin/client/resource/images/key-window/scroll_button_up_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..a362b4e7f1c1e6165df703886e24d6c4534e04a7 GIT binary patch literal 3184 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 DHZp-< literal 0 HcmV?d00001 diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomButton.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomButton.java index aad16e1..4627f5f 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomButton.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomButton.java @@ -1,7 +1,7 @@ /** + * Image Button * - * - * Copyright ( C ) 2011 - 2012 Samsung Electronics Co., Ltd. All rights reserved. + * Copyright ( C ) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved. * * Contact: * GiWoong Kim diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrollBar.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrollBar.java new file mode 100644 index 0000000..12d73a1 --- /dev/null +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrollBar.java @@ -0,0 +1,226 @@ +/** + * + * + * Copyright ( C ) 2013 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * GiWoong Kim + * YeongKyoon Lee + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or ( at your option ) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributors: + * - S-Core Co., Ltd + * + */ + +package org.tizen.emulator.skin.custom; + +import java.util.Timer; +import java.util.TimerTask; +import java.util.logging.Logger; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.MouseListener; +import org.eclipse.swt.events.PaintEvent; +import org.eclipse.swt.events.PaintListener; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.RowData; +import org.eclipse.swt.layout.RowLayout; +import org.eclipse.swt.widgets.Canvas; +import org.eclipse.swt.widgets.Composite; +import org.tizen.emulator.skin.log.SkinLogger; + + +public class CustomScrollBar { + static final int SCROLL_SHIFT_LENGTH = 10; + + private Logger logger = SkinLogger.getSkinLogger( + CustomScrollBar.class).getLogger(); + + private Composite parent; + private Composite composite; + CustomScrolledComposite compositeScroll; + + private int heightScrollBar; + private int maxShift; + + private Image[] imagesArrowUp; + private Image[] imagesArrowDown; + private Image imageThumb; + private Image imageShaft; + + private CustomButton buttonArrowUp; + private CustomButton buttonArrowDown; + private Canvas canvasShaft; + private CustomButton buttonThumb; + + private int valueSelection; + private Timer timerScroller; + private TimerTask scroller; + + CustomScrollBar(Composite parent, int style, int heightScrollBar, + Image[] imagesArrowUp, Image[] imagesArrowDown, + Image imageThumb, Image imageShaft) { + this.parent = parent; + this.composite = new Composite(parent, SWT.NONE); + this.compositeScroll = ((CustomScrolledComposite) parent.getParent()); + + RowLayout rowLayout = new RowLayout(SWT.VERTICAL); + rowLayout.marginLeft = rowLayout.marginRight = 0; + rowLayout.marginTop = rowLayout.marginBottom = 0; + rowLayout.marginWidth = rowLayout.marginHeight = 0; + rowLayout.spacing = 0; + + composite.setLayout(rowLayout); + + this.heightScrollBar = heightScrollBar; + this.maxShift = SCROLL_SHIFT_LENGTH; + + this.imagesArrowUp = imagesArrowUp; + this.imagesArrowDown = imagesArrowDown; + this.imageThumb = imageThumb; + this.imageShaft = imageShaft; + + //this.timerScroller = new Timer(); + + createContents(); + + addScrollBarListener(); + } + + protected void createContents() { + /* arrow up */ + buttonArrowUp = new CustomButton(composite, SWT.NONE, + imagesArrowUp[0], imagesArrowUp[1], imagesArrowUp[2]); + + int width = buttonArrowUp.getImageSize().x; + int height = buttonArrowUp.getImageSize().y; + + buttonArrowUp.setBackground(parent.getBackground()); + buttonArrowUp.setLayoutData(new RowData(width, height)); + + /* shaft */ + canvasShaft = new Canvas(composite, SWT.NONE); + + final int widthShaft = width; + final int heightShaft = heightScrollBar - (height * 2); + canvasShaft.setLayoutData(new RowData(widthShaft, heightShaft)); + + canvasShaft.addPaintListener(new PaintListener() { + @Override + public void paintControl(PaintEvent e) { + if (imageShaft != null) { + e.gc.drawImage(imageShaft, 0, 0, + imageShaft.getImageData().width, + imageShaft.getImageData().height, + 0, 0, widthShaft, heightShaft); + } + } + }); + + /* arrow down */ + buttonArrowDown = new CustomButton(composite, SWT.NONE, + imagesArrowDown[0], imagesArrowDown[1], imagesArrowDown[2]); + + buttonArrowDown.setBackground(parent.getBackground()); + buttonArrowDown.setLayoutData(new RowData(width, height)); + } + + class ScrollerTask extends TimerTask { + @Override + public void run() { + int vSelection = getSelection(); + if (vSelection <= (173 - heightScrollBar - 1)) { + setSelection(getSelection() + 1); + logger.info("" + getSelection()); + +// Display.getCurrent().asyncExec(new Runnable() { +// @Override +// public void run() { + //compositeScroll.vScroll(); +// } +// }); + } + } + } + + protected void addScrollBarListener() { + buttonArrowUp.addMouseListener(new MouseListener() { + @Override + public void mouseDown(MouseEvent e) { + int shift = getSelection(); + + if (shift > 0) { + setSelection(getSelection() - Math.min(maxShift, shift)); + ((CustomScrolledComposite) parent.getParent()).vScroll(); + } + } + + @Override + public void mouseUp(MouseEvent e) { + /* do nothing */ + } + + @Override + public void mouseDoubleClick(MouseEvent e) { + /* do nothing */ + } + }); + + buttonArrowDown.addMouseListener(new MouseListener() { + @Override + public void mouseDown(MouseEvent e) { + int minHeightContents = + ((CustomScrolledComposite) parent.getParent()).getMinHeight(); + + int shift = (minHeightContents - heightScrollBar) - getSelection(); + + if (shift > 0) { + setSelection(getSelection() + Math.min(maxShift, shift)); + ((CustomScrolledComposite) parent.getParent()).vScroll(); + } + } + + @Override + public void mouseUp(MouseEvent e) { + timerScroller.cancel(); + timerScroller = new Timer(); + } + + @Override + public void mouseDoubleClick(MouseEvent e) { + /* do nothing */ + } + }); + +// buttonArrowDown.addDragDetectListener(new DragDetectListener() { +// @Override +// public void dragDetected( DragDetectEvent e ) { +// logger.info( "dragDetected:" + e.button ); +// timerScroller.schedule(new ScrollerTask(), 1, 100); +// } +// }); + } + + public int getSelection() { + return valueSelection; + } + + public void setSelection(int selection) { + valueSelection = selection; + } +} diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrolledComposite.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrolledComposite.java new file mode 100644 index 0000000..fc8abbc --- /dev/null +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrolledComposite.java @@ -0,0 +1,178 @@ +/** + * + * + * Copyright ( C ) 2013 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * GiWoong Kim + * YeongKyoon Lee + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or ( at your option ) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributors: + * - S-Core Co., Ltd + * + */ + +package org.tizen.emulator.skin.custom; + +import java.util.logging.Logger; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Listener; +import org.tizen.emulator.skin.log.SkinLogger; + +public class CustomScrolledComposite extends Composite { + + private Logger logger = + SkinLogger.getSkinLogger(CustomScrolledComposite.class).getLogger(); + + Control content; + Listener contentListener; + Listener filter; + Point sizeContent; + + Composite compositeRight; + CustomScrollBar vBar; + + private Image[] imagesArrowUp; + private Image[] imagesArrowDown; + private Image imageThumb; + private Image imageShaft; + + public int minHeight = 0; + public int minWidth = 0; + public boolean expandHorizontal = false; + public boolean expandVertical = false; + + private int value; + + public CustomScrolledComposite(Composite parent, int style, + Image[] imagesArrowUp, Image[] imagesArrowDown, + Image imageThumb, Image imageShaft) { + super(parent, style); + super.setLayout(new ScrolledCompositeLayout()); + + compositeRight = new Composite(this, SWT.NONE); + compositeRight.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_YELLOW)); + + GridLayout compositeGridLayout = new GridLayout(1, false); + compositeGridLayout.marginLeft = compositeGridLayout.marginRight = 0; + compositeGridLayout.marginTop = compositeGridLayout.marginBottom = 0; + compositeGridLayout.marginWidth = compositeGridLayout.marginHeight = 0; + compositeGridLayout.horizontalSpacing = compositeGridLayout.verticalSpacing = 0; + compositeRight.setLayout(compositeGridLayout); + + this.imagesArrowUp = imagesArrowUp; + this.imagesArrowDown = imagesArrowDown; + this.imageThumb = imageThumb; + this.imageShaft = imageShaft; + + value = 0; + } + + public CustomScrollBar getScrollBar() { + return vBar; + } + + public void setContent(Control content, Point sizeContent) { + checkWidget(); + if (this.content != null && !this.content.isDisposed()) { + this.content.removeListener(SWT.Resize, contentListener); + this.content.setBounds(new Rectangle(-200, -200, 0, 0)); + } + + this.content = content; + this.sizeContent = sizeContent; + + if (this.content != null) { + if (vBar == null) { + compositeRight.setBackground(this.content.getBackground()); + vBar = new CustomScrollBar(compositeRight, SWT.NONE, sizeContent.y, + imagesArrowUp, imagesArrowDown, imageThumb, imageShaft); + } + + content.setLocation(0, 0); + + layout(false); + + } + } + + public void setExpandHorizontal(boolean expand) { + checkWidget(); + if (expand == expandHorizontal) return; + expandHorizontal = expand; + layout(false); + } + + public void setExpandVertical(boolean expand) { + checkWidget(); + if (expand == expandVertical) return; + expandVertical = expand; + layout(false); + } + + public void setMinSize(Point size) { + if (size == null) { + setMinSize(0, 0); + } else { + setMinSize(size.x, size.y); + } + } + + public void setMinSize(int width, int height) { + checkWidget(); + if (width == minWidth && height == minHeight) { + return; + } + + minWidth = Math.max(0, width); + minHeight = Math.max(0, height); + + logger.info("composite minWidth : " + minWidth + + ", minHeight : " + minHeight); + + layout(false); + } + + public int getMinWidth() { + checkWidget(); + return minWidth; + } + + public int getMinHeight() { + checkWidget(); + return minHeight; + } + + public void vScroll() { + if (content == null) { + return; + } + + Point location = content.getLocation(); + int vSelection = vBar.getSelection(); + + content.setLocation(location.x, -vSelection); + } +} \ No newline at end of file diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrolledCompositeLayout.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrolledCompositeLayout.java new file mode 100644 index 0000000..c63ced2 --- /dev/null +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/CustomScrolledCompositeLayout.java @@ -0,0 +1,101 @@ +/** + * + * + * Copyright ( C ) 2013 Samsung Electronics Co., Ltd. All rights reserved. + * + * Contact: + * GiWoong Kim + * YeongKyoon Lee + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or ( at your option ) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributors: + * - S-Core Co., Ltd + * + */ + +package org.tizen.emulator.skin.custom; + +import java.util.logging.Logger; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Layout; +import org.tizen.emulator.skin.log.SkinLogger; + +class ScrolledCompositeLayout extends Layout { + static final int DEFAULT_WIDTH = 64; + static final int DEFAULT_HEIGHT = 64; + + private Logger logger = SkinLogger.getSkinLogger( + ScrolledCompositeLayout.class).getLogger(); + + private boolean inLayout = false; + + protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache) { + CustomScrolledComposite sc = (CustomScrolledComposite)composite; + Point size = new Point(DEFAULT_WIDTH, DEFAULT_HEIGHT); + + if (sc.content != null) { + Point preferredSize = sc.content.computeSize(wHint, hHint, flushCache); + size.x = preferredSize.x; + size.y = preferredSize.y; + } + size.x = Math.max(size.x, sc.minWidth); + size.y = Math.max(size.y, sc.minHeight); + + if (wHint != SWT.DEFAULT) size.x = wHint; + if (hHint != SWT.DEFAULT) size.y = hHint; + + return size; + } + + protected boolean flushCache(Control control) { + return true; + } + + protected void layout(Composite composite, boolean flushCache) { + if (inLayout) { + return; + } + + CustomScrolledComposite sc = (CustomScrolledComposite)composite; + if (sc.content == null) { + return; + } + + inLayout = true; + Rectangle contentRect = sc.content.getBounds(); + + Rectangle hostRect = sc.getClientArea(); + if (sc.expandHorizontal) { + contentRect.width = Math.max(sc.minWidth, hostRect.width); + } + if (sc.expandVertical) { + contentRect.height = Math.max(sc.minHeight, hostRect.height); + } + + sc.content.setBounds(contentRect); + + Point size = sc.compositeRight.computeSize(SWT.DEFAULT, SWT.DEFAULT); + sc.compositeRight.setBounds( + contentRect.width - size.x, 0, size.x, contentRect.height); + + inLayout = false; + } +} diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/KeyWindow.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/KeyWindow.java index 02c8227..ee1f86c 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/KeyWindow.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/custom/KeyWindow.java @@ -69,13 +69,22 @@ public class KeyWindow extends SkinWindow { private static final int PAIRTAG_MARGIN_BOTTOM = 6; private static final int BUTTON_DEFAULT_CNT = 4; private static final int BUTTON_VERTICAL_SPACING = 7; + private static final int SCROLLBAR_HORIZONTAL_SPACING = 4; + private static final int SCROLLBAR_SIZE_WIDTH = 14; private EmulatorSkin skin; private SkinPatches frameMaker; + + private int widthBase; + private int heightBase; + private int widthScrollbar; + private int cntHiddenButton; + private Image imageNormal; /* ImageButton image */ private Image imageHover; /* hovered ImageButton image */ private Image imagePushed; /* pushed ImageButton image */ private Image imageFrame; /* nine-patch image */ + private Color colorFrame; private Color colorPairTag; private SocketCommunicator communicator; @@ -98,7 +107,7 @@ public class KeyWindow extends SkinWindow { this.frameMaker = new SkinPatches(PATCH_IMAGES_PATH); this.colorPairTag = colorPairTag; - this.keyMapList = keyMapList; + this.keyMapList = keyMapList; //TODO: null this.communicator = communicator; this.grabPosition = new Point(0, 0); @@ -114,25 +123,27 @@ public class KeyWindow extends SkinWindow { KeyWindowImageName.KEYBUTTON_PUSHED); /* calculate the key window size */ - int width = imageNormal.getImageData().width; - int height = (imageNormal.getImageData().height * BUTTON_DEFAULT_CNT) + - (BUTTON_VERTICAL_SPACING * (BUTTON_DEFAULT_CNT - 1)) + - (PAIRTAG_CIRCLE_SIZE + PAIRTAG_MARGIN_BOTTOM) + - SHELL_MARGIN_BOTTOM; + widthBase = imageNormal.getImageData().width; + heightBase = (imageNormal.getImageData().height * BUTTON_DEFAULT_CNT) + + (BUTTON_VERTICAL_SPACING * (BUTTON_DEFAULT_CNT - 1)); + + widthScrollbar = SCROLLBAR_SIZE_WIDTH + SCROLLBAR_HORIZONTAL_SPACING; + int heightHeaderPart = (PAIRTAG_CIRCLE_SIZE + PAIRTAG_MARGIN_BOTTOM); + int heightTailPart = SHELL_MARGIN_BOTTOM; /* make a frame image */ - this.imageFrame = frameMaker.getPatchedImage(width, height); + this.cntHiddenButton = 0; //keyMapList.size() - BUTTON_DEFAULT_CNT; + + this.imageFrame = frameMaker.getPatchedImage( + widthBase + ((cntHiddenButton > 0) ? widthScrollbar : 0), + heightBase + heightHeaderPart + heightTailPart); this.colorFrame = new Color(shell.getDisplay(), new RGB(38, 38, 38)); -// /* generate a pair tag color of key window */ -// int red = (int) (Math.random() * 256); -// int green = (int) (Math.random() * 256); -// int blue = (int) (Math.random() * 256); -// this.colorPairTag = new Color(shell.getDisplay(), new RGB(red, green, blue)); this.colorPairTag = colorPairTag; createContents(); trimPatchedShell(shell, imageFrame); + addKeyWindowListener(); shell.setBackground(colorFrame); @@ -143,7 +154,8 @@ public class KeyWindow extends SkinWindow { protected void createContents() { GridLayout shellGridLayout = new GridLayout(1, false); shellGridLayout.marginLeft = shellGridLayout.marginRight = frameMaker.getPatchWidth(); - shellGridLayout.marginTop = shellGridLayout.marginBottom = frameMaker.getPatchHeight(); + shellGridLayout.marginTop = frameMaker.getPatchHeight(); + shellGridLayout.marginBottom = frameMaker.getPatchHeight() + SHELL_MARGIN_BOTTOM; shellGridLayout.marginWidth = shellGridLayout.marginHeight = 0; shellGridLayout.horizontalSpacing = shellGridLayout.verticalSpacing = 0; @@ -166,12 +178,65 @@ public class KeyWindow extends SkinWindow { } }); - /* */ - ScrolledComposite compositeScroll = new ScrolledComposite(shell, SWT.V_SCROLL); - compositeScroll.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 1)); + /* make a region of HW keys */ + if (cntHiddenButton > 0) { + /* added custom scrollbar */ + + Image imagesScrollArrowUp[] = new Image[3]; + Image imagesScrollArrowDown[] = new Image[3]; + + imagesScrollArrowUp[0] = skin.getImageRegistry().getKeyWindowImageData( + KeyWindowImageName.SCROLL_UPBUTTON_NORMAL); + imagesScrollArrowUp[1] = skin.getImageRegistry().getKeyWindowImageData( + KeyWindowImageName.SCROLL_UPBUTTON_HOVER); + imagesScrollArrowUp[2] = skin.getImageRegistry().getKeyWindowImageData( + KeyWindowImageName.SCROLL_UPBUTTON_PUSHED); + + imagesScrollArrowDown[0] = skin.getImageRegistry().getKeyWindowImageData( + KeyWindowImageName.SCROLL_DOWNBUTTON_NORMAL); + imagesScrollArrowDown[1] = skin.getImageRegistry().getKeyWindowImageData( + KeyWindowImageName.SCROLL_DOWNBUTTON_HOVER); + imagesScrollArrowDown[2] = skin.getImageRegistry().getKeyWindowImageData( + KeyWindowImageName.SCROLL_DOWNBUTTON_PUSHED); + + CustomScrolledComposite compositeScroll = + new CustomScrolledComposite(shell, SWT.NONE, + imagesScrollArrowUp, imagesScrollArrowDown, + skin.getImageRegistry().getKeyWindowImageData( + KeyWindowImageName.SCROLL_THUMB), + skin.getImageRegistry().getKeyWindowImageData( + KeyWindowImageName.SCROLL_SHAFT)); + compositeScroll.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 1)); + + Composite compositeBase = new Composite(compositeScroll, SWT.NONE); + + createHwKeys(compositeBase); + + Point sizeContent = compositeBase.computeSize( + widthBase + widthScrollbar, heightBase); + compositeScroll.setContent(compositeBase, sizeContent); + compositeScroll.setExpandHorizontal(true); + compositeScroll.setExpandVertical(true); + + sizeContent.y += (imageNormal.getImageData().height * cntHiddenButton) + + (BUTTON_VERTICAL_SPACING * cntHiddenButton); + compositeScroll.setMinSize(sizeContent); + } else { + ScrolledComposite compositeScroll = new ScrolledComposite(shell, SWT.V_SCROLL); + compositeScroll.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 1)); + + Composite compositeBase = new Composite(compositeScroll, SWT.NONE); + createHwKeys(compositeBase); + + compositeScroll.setContent(compositeBase); + compositeScroll.setExpandHorizontal(true); + compositeScroll.setExpandVertical(true); + compositeScroll.setMinSize(compositeBase.computeSize(SWT.DEFAULT, SWT.DEFAULT)); + } + } - Composite compositeBase = new Composite(compositeScroll, SWT.NONE); - compositeBase.setBackground(colorFrame); + protected void createHwKeys(Composite composite) { + composite.setBackground(colorFrame); GridLayout compositeGridLayout = new GridLayout(1, false); compositeGridLayout.marginLeft = compositeGridLayout.marginRight = 0; @@ -179,12 +244,12 @@ public class KeyWindow extends SkinWindow { compositeGridLayout.marginWidth = compositeGridLayout.marginHeight = 0; compositeGridLayout.horizontalSpacing = 0; compositeGridLayout.verticalSpacing = BUTTON_VERTICAL_SPACING; - compositeBase.setLayout(compositeGridLayout); + composite.setLayout(compositeGridLayout); /* attach HW keys */ if (keyMapList != null && keyMapList.isEmpty() == false) { for (KeyMapType keyEntry : keyMapList) { - CustomButton HWKeyButton = new CustomButton(compositeBase, + CustomButton HWKeyButton = new CustomButton(composite, SWT.NO_FOCUS, imageNormal, imageHover, imagePushed); HWKeyButton.setText(keyEntry.getEventInfo().getKeyName()); HWKeyButton.setToolTipText(keyEntry.getTooltip()); @@ -215,11 +280,6 @@ public class KeyWindow extends SkinWindow { }); } } - - compositeScroll.setContent(compositeBase); - compositeScroll.setExpandHorizontal(true); - compositeScroll.setExpandVertical(true); - compositeScroll.setMinSize(compositeBase.computeSize(SWT.DEFAULT, SWT.DEFAULT)); } public static void trimPatchedShell(Shell shell, Image image) { diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java index 2eab2be..d7623f8 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/image/ImageRegistry.java @@ -109,7 +109,16 @@ public class ImageRegistry { public enum KeyWindowImageName { KEYBUTTON_NORMAL("keybutton_nml.png"), KEYBUTTON_HOVER("keybutton_hover.png"), - KEYBUTTON_PUSHED("keybutton_pushed.png"); + KEYBUTTON_PUSHED("keybutton_pushed.png"), + + SCROLL_UPBUTTON_NORMAL("scroll_button_up_nml.png"), + SCROLL_UPBUTTON_HOVER("scroll_button_up_hover.png"), + SCROLL_UPBUTTON_PUSHED("scroll_button_up_pushed.png"), + SCROLL_DOWNBUTTON_NORMAL("scroll_button_down_nml.png"), + SCROLL_DOWNBUTTON_HOVER("scroll_button_down_hover.png"), + SCROLL_DOWNBUTTON_PUSHED("scroll_button_down_pushed.png"), + SCROLL_THUMB("scroll_thumb.png"), + SCROLL_SHAFT("scroll_back.png"); private String name; -- 2.7.4