Added context help ids and HelpToolTip
authorkh5325.kim <kh5325.kim@samsung.com>
Tue, 2 Apr 2013 01:41:42 +0000 (10:41 +0900)
committerkh5325.kim <kh5325.kim@samsung.com>
Tue, 2 Apr 2013 01:41:42 +0000 (10:41 +0900)
org.tizen.common/src/org/tizen/common/TizenHelpContextIds.java
org.tizen.common/src/org/tizen/common/ui/CommonColor.java
org.tizen.common/src/org/tizen/common/ui/HelpToolTip.java [new file with mode: 0644]
org.tizen.common/src/org/tizen/common/util/SWTUtil.java

index da6608c..33a94a5 100644 (file)
@@ -37,6 +37,8 @@ public class TizenHelpContextIds
     public static final String HELP_NATIVE_UNITTEST_CONTEXT = HELP_NATIVE + "unittest_context";
     public static final String HELP_NATIVE_MANIFEST_CONTEXT = HELP_NATIVE + "manifest_context";
     public static final String HELP_NATIVE_PROJECT_WIZARD_CONTEXT = HELP_NATIVE + "project_wizard_context";
+    public static final String HELP_NATIVE_PROJECT_WIZARD_SETTINGS_CONTEXT = HELP_NATIVE + "project_wizard_settings_context";
+    public static final String HELP_NATIVE_SMART_LAUNCH_CONTEXT = HELP_NATIVE + "smart_launch_context";
 
     private static final String HELP_WEB = "org.tizen.ide.web.";
     public static final String HELP_WEB_WIDGET_CONFIGURATION_EDITOR_CONTEXT = HELP_WEB + "widget_configuration_editor_context";
@@ -49,4 +51,5 @@ public class TizenHelpContextIds
     public static final String HELP_WEB_SIMULATOR_PREFERENCES_CONTEXT = HELP_WEB + "simulator_preferences_context";
     public static final String HELP_WEB_NEW_PROJECT_WIZARD_CONTEXT = HELP_WEB + "new_project_wizard_context";
     public static final String HELP_WEB_USER_TEMPLATE_CONTEXT = HELP_WEB + "user_template_context";
+    public static final String HELP_WEB_PROJECT_BUILD_PROPERTIES_CONTEXT = HELP_WEB + "project_build_properties_context";
 }
index 702d377..e8b3bd6 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Web IDE - launch
+ *  Common
  *
  * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
  *
diff --git a/org.tizen.common/src/org/tizen/common/ui/HelpToolTip.java b/org.tizen.common/src/org/tizen/common/ui/HelpToolTip.java
new file mode 100644 (file)
index 0000000..22fe4d6
--- /dev/null
@@ -0,0 +1,267 @@
+/*\r
+*  Common\r
+*\r
+* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.\r
+*\r
+* Contact: \r
+* Ho Namkoong <ho.namkoong@samsung.com>\r
+* \r
+* Licensed under the Apache License, Version 2.0 (the "License");\r
+* you may not use this file except in compliance with the License.\r
+* You may obtain a copy of the License at\r
+*\r
+* http://www.apache.org/licenses/LICENSE-2.0\r
+*\r
+* Unless required by applicable law or agreed to in writing, software\r
+* distributed under the License is distributed on an "AS IS" BASIS,\r
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+* See the License for the specific language governing permissions and\r
+* limitations under the License.\r
+*\r
+* Contributors:\r
+* - S-Core Co., Ltd\r
+*\r
+*/\r
+\r
+package org.tizen.common.ui;\r
+\r
+import java.net.MalformedURLException;\r
+import java.net.URL;\r
+\r
+import org.eclipse.jface.window.DefaultToolTip;\r
+import org.eclipse.swt.SWT;\r
+import org.eclipse.swt.events.SelectionAdapter;\r
+import org.eclipse.swt.events.SelectionEvent;\r
+import org.eclipse.swt.events.SelectionListener;\r
+import org.eclipse.swt.graphics.Color;\r
+import org.eclipse.swt.graphics.Cursor;\r
+import org.eclipse.swt.graphics.Font;\r
+import org.eclipse.swt.graphics.Point;\r
+import org.eclipse.swt.layout.GridData;\r
+import org.eclipse.swt.layout.GridLayout;\r
+import org.eclipse.swt.widgets.Composite;\r
+import org.eclipse.swt.widgets.Control;\r
+import org.eclipse.swt.widgets.Event;\r
+import org.eclipse.swt.widgets.Label;\r
+import org.eclipse.swt.widgets.Link;\r
+import org.eclipse.swt.widgets.Listener;\r
+import org.eclipse.swt.widgets.Shell;\r
+import org.eclipse.ui.PlatformUI;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import org.tizen.common.util.OpenBrowserUtil;\r
+import org.tizen.common.util.StringUtil;\r
+\r
+public class HelpToolTip extends DefaultToolTip {\r
+    final Logger logger = LoggerFactory.getLogger(HelpToolTip.class);\r
+\r
+    private Cursor helpCursor;\r
+    private TooltipShowListener showListener;\r
+    private TooltipHideListener hideListener;\r
+    private Composite composite;\r
+    private Control tooltipControl;\r
+    private int popupDelay;\r
+    private boolean showOnMouseDown;\r
+    private boolean focusOnHover;\r
+    private SelectionListener linkListener;\r
+\r
+    public HelpToolTip(Composite c) {\r
+        this(c, true, false);\r
+    }\r
+\r
+    public HelpToolTip(Composite c, boolean showOnMouseDown, boolean hideOnMouseDown) {\r
+        super(HelpToolTip.createHelpIcon(c), NO_RECREATE, false);\r
+        tooltipControl = (Control) getToolTipArea(null);\r
+        helpCursor = new Cursor(tooltipControl.getShell().getDisplay(), SWT.CURSOR_HAND);\r
+        tooltipControl.setCursor(helpCursor);\r
+        showListener = new TooltipShowListener();\r
+        hideListener = new TooltipHideListener();\r
+        linkListener = new TooltipSelectionListener();\r
+        tooltipControl.addListener(SWT.MouseDown, showListener);\r
+\r
+        setPopupDelay(1000);\r
+        setShowOnMouseDown(showOnMouseDown);\r
+        setHideOnMouseDown(hideOnMouseDown);\r
+    }\r
+\r
+    @Override\r
+    public void deactivate() {\r
+        super.deactivate();\r
+        if (tooltipControl != null)\r
+            tooltipControl.removeListener(SWT.MouseDown, showListener);\r
+    }\r
+\r
+    @Override\r
+    public void activate() {\r
+        super.activate();\r
+        setShowOnMouseDown(showOnMouseDown);\r
+    }\r
+\r
+    @Override\r
+    protected final Composite createToolTipContentArea(Event event, Composite parent) {\r
+        composite = doCreateToolTipContentArea(event, parent);\r
+        tooltipControl.removeListener(SWT.MouseDown, showListener);\r
+        if (composite != null)\r
+            tooltipControl.addListener(SWT.MouseExit, hideListener);\r
+        return composite;\r
+    }\r
+\r
+    protected Composite doCreateToolTipContentArea(Event event, Composite parent) {\r
+        String text = getText(event);\r
+        Color fgColor = getForegroundColor(event);\r
+        Color bgColor = getBackgroundColor(event);\r
+        Font font = getFont(event);\r
+        SelectionListener listener = getLinkListener(event);\r
+        Composite composite = new Composite(parent, 0);\r
+        composite.setLayout(new GridLayout());\r
+        Control label;\r
+\r
+        if (listener != null) {\r
+            setFocusOnHover(true);\r
+            label = new Link(composite, getStyle(event) | 0x40);\r
+            ((Link) label).addSelectionListener(listener);\r
+            if (text != null)\r
+                ((Link) label).setText(text);\r
+        } else {\r
+            label = new Label(composite, getStyle(event) | 0x40);\r
+            if (text != null)\r
+                ((Label) label).setText(text);\r
+        }\r
+\r
+        if (label.computeSize(-1, -1).x > 350) {\r
+            GridData gd = new GridData();\r
+            gd.widthHint = 350;\r
+            label.setLayoutData(gd);\r
+        }\r
+        if (fgColor != null)\r
+            label.setForeground(fgColor);\r
+        if (bgColor != null) {\r
+            composite.setBackground(bgColor);\r
+            label.setBackground(bgColor);\r
+        }\r
+        if (font != null)\r
+            label.setFont(font);\r
+\r
+        return composite;\r
+    }\r
+\r
+    protected void afterHideToolTip(Event event) {\r
+        tooltipControl.removeListener(SWT.MouseDown, showListener);\r
+        if (showOnMouseDown)\r
+            tooltipControl.addListener(SWT.MouseDown, showListener);\r
+        tooltipControl.removeListener(SWT.MouseExit, hideListener);\r
+\r
+        super.afterHideToolTip(event);\r
+    }\r
+\r
+    public void setPopupDelay(int popupDelay) {\r
+        this.popupDelay = popupDelay;\r
+        super.setPopupDelay(popupDelay);\r
+    }\r
+\r
+    protected SelectionListener getLinkListener(Event event) {\r
+        return linkListener;\r
+    }\r
+\r
+    public void setShowOnMouseDown(boolean showOnMouseDown) {\r
+        this.showOnMouseDown = showOnMouseDown;\r
+        if (tooltipControl != null) {\r
+            tooltipControl.removeListener(SWT.MouseDown, showListener);\r
+            if (showOnMouseDown)\r
+                tooltipControl.addListener(SWT.MouseDown, showListener);\r
+        }\r
+    }\r
+\r
+    public boolean isShowOnMouseDown() {\r
+        return showOnMouseDown;\r
+    }\r
+\r
+    public void setFocusOnHover(boolean focusOnHover) {\r
+        this.focusOnHover = focusOnHover;\r
+    }\r
+\r
+    public boolean isFocusOnHover() {\r
+        return focusOnHover;\r
+    }\r
+\r
+    private static Label createHelpIcon(Composite c) {\r
+        Label helpIcon = new Label(c, SWT.NONE);\r
+        helpIcon.setImage(PlatformUI.getWorkbench().getSharedImages().getImage("IMG_LCL_LINKTO_HELP"));\r
+        return helpIcon;\r
+    }\r
+\r
+    public void dispose() {\r
+        if (helpCursor != null)\r
+            helpCursor.dispose();\r
+    }\r
+\r
+    class TooltipShowListener implements Listener {\r
+        @Override\r
+        public void handleEvent(Event event) {\r
+            switch (event.type) {\r
+                case SWT.MouseDown :\r
+                    hide();\r
+                    setPopupDelay(0);\r
+                    Point cursorAbsLocation = tooltipControl.getDisplay().getCursorLocation();\r
+                    Point containerAbsLocation = tooltipControl.getParent().toDisplay(tooltipControl.getLocation());\r
+                    int relativeX = cursorAbsLocation.x - containerAbsLocation.x;\r
+                    int relativeY = cursorAbsLocation.y - containerAbsLocation.y;\r
+                    show(new Point(relativeX, relativeY));\r
+                    setPopupDelay(popupDelay);\r
+\r
+                    break;\r
+            }\r
+        }\r
+    }\r
+\r
+    class TooltipHideListener implements Listener {\r
+        @Override\r
+        public void handleEvent(Event event) {\r
+            if (composite.isDisposed())\r
+                return;\r
+\r
+            Shell shell = composite.getShell();\r
+            switch (event.type) {\r
+                case SWT.MouseUp :\r
+                case SWT.MouseMove :\r
+                case SWT.MouseEnter :\r
+                    break;\r
+                case SWT.MouseDown :\r
+                    if (isHideOnMouseDown())\r
+                        hide();\r
+\r
+                    break;\r
+                case SWT.MouseExit :\r
+                    if (!shell.getBounds().contains(composite.getDisplay().getCursorLocation())) {\r
+                        hide();\r
+                        break;\r
+                    }\r
+                    if (focusOnHover) {\r
+                        shell.setActive();\r
+                        composite.setFocus();\r
+                    }\r
+\r
+                    break;\r
+            }\r
+        }\r
+    }\r
+\r
+    class TooltipSelectionListener extends SelectionAdapter {\r
+        public void widgetSelected(SelectionEvent e) {\r
+            hide();\r
+            String link = e.text.toLowerCase();\r
+            if (link == null)\r
+                return;\r
+            if (link.startsWith("http://"))\r
+                try {\r
+                    OpenBrowserUtil.openExternal(new URL(e.text), tooltipControl.getDisplay());\r
+                } catch (MalformedURLException e1) {\r
+                    logger.error(e1.getMessage());\r
+                }\r
+            else if (link.startsWith("help://")) {\r
+                // help://org.tizen.native.appprogramming/html/ide_sdk_tools/project_settings.htm -> /org.tizen.native.appprogramming/html/ide_sdk_tools/project_settings.htm\r
+                PlatformUI.getWorkbench().getHelpSystem().displayHelpResource("/" + StringUtil.removeStart(link, "help://"));\r
+            }\r
+        }\r
+    }\r
+}\r
index 89cf846..f8369bf 100755 (executable)
@@ -632,11 +632,13 @@ public class SWTUtil {
                                     }
                                 }
                                 Point childSize = childControl.getSize();
-                                Image childImage = new Image(SWTUtil.getDisplay(), childSize.x, childSize.y);
-                                GC gc = new GC(parentImage);
-                                gc.copyArea(childImage, childLoc.x, childLoc.y);
-                                gc.dispose();
-                                childControl.setBackgroundImage(childImage);
+                                if(childSize.x > 0 && childSize.y > 0) {
+                                    Image childImage = new Image(SWTUtil.getDisplay(), childSize.x, childSize.y);
+                                    GC gc = new GC(parentImage);
+                                    gc.copyArea(childImage, childLoc.x, childLoc.y);
+                                    gc.dispose();
+                                    childControl.setBackgroundImage(childImage);
+                                }
                             }
                         }
                     }