[Title] modify ProgressDialog
authorheeyoung <heeyoung1008.hwang@samsung.com>
Thu, 6 Mar 2014 09:27:39 +0000 (18:27 +0900)
committerheeyoung <heeyoung1008.hwang@samsung.com>
Thu, 6 Mar 2014 09:27:39 +0000 (18:27 +0900)
[Desc.] add the cancel button in ProgressDialog
[Issue] -

Change-Id: Iedb60098bb856f1c0a82b943a46ba9f3d0915a0b
Signed-off-by: heeyoung <heeyoung1008.hwang@samsung.com>
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/helper/ColorResources.java
org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/progress/Progress.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProcessManager.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProgressDialog.java [new file with mode: 0644]
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/TraceStartStopThread.java
org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ProgressDialog.java

index f02544a..dc941be 100644 (file)
@@ -206,7 +206,31 @@ public class ColorResources {
        public static Color POPUP_MENU_OUTLINE_STORKE1 = getColor("popup_menu_outline_stroke1", new RGB(145, 145, 145)); //$NON-NLS-1$\r
        public static Color POPUP_MENU_OUTLINE_STORKE2 = getColor("popup_menu_outline_stroke2", new RGB(255, 255, 255)); //$NON-NLS-1$\r
 \r
-       \r
+       /*** common button colors ***/\r
+       public static Color BUTTON_DISABLE_COLOR_START = getColor("button_disable_color_start", new RGB(206, 206, 206)); //$NON-NLS-1$\r
+       public static Color BUTTON_DISABLE_COLOR_END = getColor("button_disable_color_end", new RGB(163, 163, 163)); //$NON-NLS-1$\r
+       public static Color BUTTON_NORMAL_COLOR_START = getColor("button_normal_color_start", new RGB(240, 240, 240)); //$NON-NLS-1$\r
+       public static Color BUTTON_NORMAL_COLOR_END = getColor("button_normal_color_end", new RGB(163, 163, 163)); //$NON-NLS-1$\r
+       public static Color BUTTON_HOVER_COLOR_START = getColor("button_hover_color_start", new RGB(240, 240, 240)); //$NON-NLS-1$\r
+       public static Color BUTTON_HOVER_COLOR_END = getColor("button_hover_color_end", new RGB(163, 163, 163)); //$NON-NLS-1$\r
+       public static Color BUTTON_PUSH_COLOR_START = getColor("button_push_color_start", new RGB(163, 163, 163)); //$NON-NLS-1$\r
+       public static Color BUTTON_PUSH_COLOR_END = getColor("button_push_color_end", new RGB(240, 240, 240)); //$NON-NLS-1$\r
+\r
+       public static Color BUTTON_OUTLINE_NORMAL_IN_COLOR = getColor("button_outline_normal_in_color", new RGB(120, 120, 120)); //$NON-NLS-1$\r
+       public static Color BUTTON_OUTLINE_PUSH_IN_COLOR = getColor("button_outline_push_in_color", new RGB(120, 120, 120)); //$NON-NLS-1$\r
+       public static Color BUTTON_OUTLINE_HOVER_IN_COLOR = getColor("button_outline_hover_in_color", new RGB(120, 120, 120)); //$NON-NLS-1$\r
+       public static Color BUTTON_OUTLINE_DISABLE_IN_COLOR = getColor("button_outline_disable_in_color", new RGB(115, 115, 115)); //$NON-NLS-1$\r
+\r
+       public static Color BUTTON_OUTLINE_NORMAL_COLOR = getColor("button_outline_normal_color", new RGB(203, 230, 230)); //$NON-NLS-1$\r
+       public static Color BUTTON_OUTLINE_PUSH_COLOR = getColor("button_outline_push_color", new RGB(203, 203, 203)); //$NON-NLS-1$\r
+       public static Color BUTTON_OUTLINE_HOVER_COLOR = getColor("button_outline_hover_color", new RGB(50, 185, 231)); //$NON-NLS-1$\r
+       public static Color BUTTON_OUTLINE_DISABLE_COLOR = getColor("button_outline_disable_color", new RGB(115, 115, 115)); //$NON-NLS-1$\r
+\r
+       public static Color BUTTON_NORMAL_FONT_COLOR = getColor("button_normal_font_color", new RGB(0, 0, 0)); //$NON-NLS-1$\r
+       public static Color BUTTON_PUSH_FONT_COLOR = getColor("button_push_font_color", new RGB(91, 91, 91)); //$NON-NLS-1$\r
+       public static Color BUTTON_HOVER_FONT_COLOR = getColor("button_hover_font_color", new RGB(91, 91, 91)); //$NON-NLS-1$\r
+       public static Color BUTTON_DISABLE_FONT_COLOR = getColor("button_disable_font_color", new RGB(91, 91, 91)); //$NON-NLS-1$\r
+\r
        //\r
        // /** device and application combo specific colors start **/\r
        // public static final Color DEVICE_APPLICATION_ENABLE = WHITE;\r
index 7faef11..8128f0d 100644 (file)
@@ -42,6 +42,8 @@ import org.eclipse.swt.widgets.Canvas;
 import org.eclipse.swt.widgets.Composite;
 import org.tizen.dynamicanalyzer.widgets.DAWidgetConstants;
 import org.tizen.dynamicanalyzer.widgets.animation.DAAnimationIcon;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
 import org.tizen.dynamicanalyzer.widgets.helper.ColorResources;
 import org.tizen.dynamicanalyzer.widgets.helper.FontResources;
 import org.tizen.dynamicanalyzer.widgets.helper.ImageResources;
@@ -49,7 +51,8 @@ import org.tizen.dynamicanalyzer.widgets.helper.ImageResources;
 public class Progress extends Canvas {
 
        public static final int PROGRESS_STYLE_BAR_ALONE = 0;
-       public static final int PROGRESS_STYLE_ALL = 1;
+       public static final int PROGRESS_STYLE_DEFAULT = 1;
+       public static final int PROGRESS_STYLE_CANCEL = 2;
 
        private List<Image> loadingImage = new ArrayList<Image>();
        private DAAnimationIcon icon = null;
@@ -58,6 +61,8 @@ public class Progress extends Canvas {
        private int maxSize = 100;
        private int value = 0;
 
+       private DACustomButton cancelButton = null;
+       
        private Color barStartColor = ColorResources.STOP_PROGRESS_BAR_START_COLOR;
        private Color barEndColor = ColorResources.STOP_PROGRESS_BAR_END_COLOR;
        private Color barStartBgColor = ColorResources.STOP_PROGRESS_BAR_BG_START_COLOR;
@@ -76,34 +81,42 @@ public class Progress extends Canvas {
        private Font progressLowerFont = FontResources.STOP_PROGRESS_FONT;
        private Font progressUpperFont = FontResources.PROGRESS_FONT;
 
-       private int style = PROGRESS_STYLE_ALL;
+       private int style = PROGRESS_STYLE_DEFAULT;
 
+       
        public Progress(Composite parent, int style) {
                super(parent, style);
                this.addPaintListener(progressPaintListener);
                this.setLayout(new FormLayout());
-               loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_01);
-               loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_02);
-               loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_03);
-               loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_04);
-               loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_05);
-               loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_06);
-               loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_07);
-               loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_08);
-
-               icon = new DAAnimationIcon(this, SWT.NONE, loadingImage);
-               FormData data = new FormData();
-               data.top = new FormAttachment(0, 11);
-               data.left = new FormAttachment(0, 12);
-               data.width = 24;
-               data.height = 24;
-               icon.setLayoutData(data);
-               icon.start();
        }
 
        public Progress(Composite parent, int style, int progressStyle) {
                this(parent, style);
                this.style = progressStyle;
+               if (progressStyle == PROGRESS_STYLE_CANCEL) {
+                       initCancelButton();
+               }
+
+               if (progressStyle == PROGRESS_STYLE_CANCEL
+                               || progressStyle == PROGRESS_STYLE_DEFAULT) {
+                       loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_01);
+                       loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_02);
+                       loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_03);
+                       loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_04);
+                       loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_05);
+                       loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_06);
+                       loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_07);
+                       loadingImage.add(ImageResources.STOP_PROGRESS_LOADING_08);
+
+                       icon = new DAAnimationIcon(this, SWT.NONE, loadingImage);
+                       FormData data = new FormData();
+                       data.top = new FormAttachment(0, 11);
+                       data.left = new FormAttachment(0, 12);
+                       data.width = 24;
+                       data.height = 24;
+                       icon.setLayoutData(data);
+                       icon.start();
+               }
        }
 
        public int getValue() {
@@ -219,6 +232,13 @@ public class Progress extends Canvas {
                setUpperText(Message);
        }
 
+       public void setCancelButtonListener(
+                       DACustomButtonClickEventListener listener) {
+               if (null != cancelButton) {
+                       cancelButton.addClickListener(listener);
+               }
+       }
+       
        private PaintListener progressPaintListener = new PaintListener() {
 
                @Override
@@ -227,7 +247,7 @@ public class Progress extends Canvas {
                        canvas.setBackground(barBgColor);
                        Rectangle rect = canvas.getBounds();
 
-                       if (style == PROGRESS_STYLE_ALL) {
+                       if (style == PROGRESS_STYLE_DEFAULT) {
                                // draw outline
                                e.gc.setForeground(dialogOutlineColor2);
                                e.gc.drawRectangle(rect);
@@ -287,10 +307,94 @@ public class Progress extends Canvas {
 
                                e.gc.setForeground(barOutlineColor);
                                e.gc.drawRectangle(rect);
+                       } else if (style == PROGRESS_STYLE_CANCEL) {
+                               // draw outline
+                               e.gc.setForeground(dialogOutlineColor2);
+                               e.gc.drawRectangle(rect);
+                               e.gc.setForeground(dialogOutlineColor1);
+                               e.gc.drawRectangle(rect.x + 1, rect.y + 1, rect.width - 2,
+                                               rect.height - 2);
+
+                               // draw upper text
+                               Font prevFont = e.gc.getFont();
+                               if (null != progressUpperFont) {
+                                       e.gc.setFont(progressUpperFont);
+                               }
+                               if (null != progressUpperFontColor) {
+                                       e.gc.setForeground(progressUpperFontColor);
+                               }
+                               e.gc.drawText(upperText, 41, 18);
+                               e.gc.setFont(prevFont);
+
+                               // draw bottom text
+                               prevFont = e.gc.getFont();
+                               if (null != progressLowerFont) {
+                                       e.gc.setFont(progressLowerFont);
+                               }
+                               if (null != progressLowerFontColor) {
+                                       e.gc.setForeground(progressLowerFontColor);
+                               }
+                               e.gc.drawText(bottomText, 12, 76);
+                               e.gc.setFont(prevFont);
+
+                               // draw progress bar
+                               Rectangle barRect = new Rectangle(12, 45, rect.width - 24, 22);
+                               e.gc.setForeground(barStartBgColor);
+                               e.gc.setBackground(barEndBgColor);
+                               e.gc.fillGradientRectangle(barRect.x, barRect.y, barRect.width,
+                                               barRect.height, true);
+
+                               int width = (value * barRect.width) / 100;
+                               e.gc.setForeground(barStartColor);
+                               e.gc.setBackground(barEndColor);
+                               e.gc.fillGradientRectangle(barRect.x, barRect.y, width,
+                                               barRect.height, true);
+
+                               e.gc.setForeground(barOutlineColor);
+                               e.gc.drawRectangle(barRect);                            
                        } else {
                                System.out.println("invalid progress style..."); //$NON-NLS-1$
                        }
                }
        };
+       
+       private void initCancelButton() {
+               cancelButton = new DACustomButton(this, SWT.NONE);
+               cancelButton.setText("Cancel");
+               FormData data = new FormData();
+               data.top = new FormAttachment(0, 78);
+               data.right = new FormAttachment(100, -12);
+               data.width = 80;
+               data.height = 22;
+               cancelButton.setLayoutData(data);
+
+               cancelButton.setGradation(ColorResources.BUTTON_NORMAL_COLOR_START,
+                               ColorResources.BUTTON_NORMAL_COLOR_END,
+                               ColorResources.BUTTON_PUSH_COLOR_START,
+                               ColorResources.BUTTON_PUSH_COLOR_END,
+                               ColorResources.BUTTON_HOVER_COLOR_START,
+                               ColorResources.BUTTON_HOVER_COLOR_END,
+                               ColorResources.BUTTON_DISABLE_COLOR_START,
+                               ColorResources.BUTTON_DISABLE_COLOR_END);
+               cancelButton.setFontColors(ColorResources.BUTTON_NORMAL_FONT_COLOR,
+                               ColorResources.BUTTON_PUSH_FONT_COLOR,
+                               ColorResources.BUTTON_HOVER_FONT_COLOR,
+                               ColorResources.BUTTON_DISABLE_FONT_COLOR);
+               cancelButton.setOutlineColors(
+                               ColorResources.BUTTON_OUTLINE_NORMAL_COLOR,
+                               ColorResources.BUTTON_OUTLINE_PUSH_COLOR,
+                               ColorResources.BUTTON_OUTLINE_HOVER_COLOR,
+                               ColorResources.BUTTON_OUTLINE_DISABLE_COLOR);
+               cancelButton.setOutlineInColors(
+                               ColorResources.BUTTON_OUTLINE_NORMAL_IN_COLOR,
+                               ColorResources.BUTTON_OUTLINE_PUSH_IN_COLOR,
+                               ColorResources.BUTTON_OUTLINE_HOVER_IN_COLOR,
+                               ColorResources.BUTTON_OUTLINE_DISABLE_IN_COLOR);
+               cancelButton.setButtonFont(FontResources.DIALOG_BUTTON_FONT);
+       }
+
+       public DACustomButton getCancelButton() {
+               return cancelButton;
+       }
 
 }
index 155f10a..6f44aff 100755 (executable)
@@ -91,6 +91,7 @@ import org.tizen.dynamicanalyzer.ui.page.UpdateViewTimer;
 import org.tizen.dynamicanalyzer.ui.summary.profiling.FunctionUsageProfiler;
 import org.tizen.dynamicanalyzer.ui.thread.ThreadChartManager;
 import org.tizen.dynamicanalyzer.ui.toolbar.ConfigureManager;
+import org.tizen.dynamicanalyzer.ui.toolbar.StartProcessManager;
 import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
 import org.tizen.dynamicanalyzer.ui.userinterface.UIDataManager;
 import org.tizen.dynamicanalyzer.ui.widgets.DADialog;
@@ -202,7 +203,7 @@ public class Communicator30 extends BaseCommunicator {
                                e.printStackTrace();
                        }
                }
-
+               
                // data receive thread create and start
                Thread dataThread = new Thread(null, new DataChannelThread(),
                                AnalyzerConstants.COMMUNICATOR_RECEIVE_THREAD);
@@ -210,6 +211,12 @@ public class Communicator30 extends BaseCommunicator {
                HostResult result = handleControlMessage(
                                DACommunicator.getSelectedDevice(), ret);
 
+               // FIX
+               if (!StartProcessManager.getInstance().isCancelled()) {
+                       //StartProcessManager.getInstance().setCancelDisable();
+                       StartProcessManager.getInstance().setValue(100);
+               }
+               
                if (result.isSuccess()) {
                        if (!isCorrectAck(MSG_START_ACK, result)) {
                                HostResult failResult = HostResult.ERR_MSG_START_FAIL;
@@ -237,7 +244,7 @@ public class Communicator30 extends BaseCommunicator {
                index += INT_SIZE;
                profilingStartTime.setSec(sec);
                profilingStartTime.setNano(nano);
-
+               
                UIRecorderTool.getInstance().startRecorder();
                ToolbarArea.getInstance().startTimer();
                SWAPLogParser.startLogParser();
index 5d0d0cd..f41deae 100755 (executable)
@@ -65,6 +65,7 @@ import org.tizen.dynamicanalyzer.swap.model.data.LogData;
 import org.tizen.dynamicanalyzer.swap.model.data.LogDataFactory;
 import org.tizen.dynamicanalyzer.swap.model.data.LogDataUtils;
 import org.tizen.dynamicanalyzer.ui.thread.ThreadChartManager;
+import org.tizen.dynamicanalyzer.ui.toolbar.StartProcessManager;
 import org.tizen.dynamicanalyzer.ui.toolbar.StopLogProcessor;
 import org.tizen.dynamicanalyzer.ui.toolbar.StopProcessManager;
 import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
@@ -499,14 +500,16 @@ public class MessageParser {
                                }
                        } // end while()
                        System.out.println("Receive thread end!!");
-                       Display.getDefault().asyncExec(new Runnable() {
-                               @Override
-                               public void run() {
-                                       StopProcessManager.getInstance().stopProcessStart(
-                                                       AnalyzerLabels.STOP_PROCESS_DLG_SUMMARIZING_DATA); // socket
-                                       // timeout
-                               }
-                       });
+                       if (!StartProcessManager.getInstance().isCancelled()){  
+                               Display.getDefault().asyncExec(new Runnable() {
+                                       @Override
+                                       public void run() {
+                                               StopProcessManager.getInstance().stopProcessStart(
+                                                               AnalyzerLabels.STOP_PROCESS_DLG_SUMMARIZING_DATA); // socket
+                                               // timeout
+                                       }
+                               });
+                       }
                        endingSteps();
                } catch (IOException e) {
                        System.out
@@ -539,8 +542,11 @@ public class MessageParser {
                });
                stopTimer();
                addBufferToList();
-               System.out.println("start!! : stop log process");//$NON-NLS-1$
-               StopLogProcessor.runStopLogProcessThread();
+               if (!StartProcessManager.getInstance().isCancelled()) {
+                       System.out.println("start!! : stop log process");//$NON-NLS-1$
+                       StopLogProcessor.runStopLogProcessThread();
+               }
+
                AnalyzerUtil.executeCommand(StopHandler.ID);
                AnalyzerManager.setProcessInfoArrived(false);
                ReplayTraceHandler.isReplay = false;
index 5c0d5f4..40bc018 100644 (file)
@@ -1,15 +1,18 @@
 package org.tizen.dynamicanalyzer.ui.toolbar;
 
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
 import org.tizen.dynamicanalyzer.common.AnalyzerManager;
 import org.tizen.dynamicanalyzer.nl.AnalyzerLabels;
-import org.tizen.dynamicanalyzer.ui.widgets.ProgressDialog;
 import org.tizen.dynamicanalyzer.utils.AnalyzerUtil;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButton;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
 
 public class StartProcessManager implements Runnable {
-       private static ProgressDialog dialog = null;
+       private static StartProgressDialog dialog = null;
        private static int count = 1;
+       private static boolean canceled = false;
 
        private static StartProcessManager instance = new StartProcessManager();
 
@@ -19,17 +22,29 @@ public class StartProcessManager implements Runnable {
 
        public void startProcessStart(String waitMessage) {
                Shell shell = AnalyzerUtil.getWorkbenchWindow().getShell();
-               dialog = new ProgressDialog(shell);
+               dialog = new StartProgressDialog(shell, SWT.ON_TOP);
                if (null != dialog) {
                        dialog.open();
+//                     AnalyzerManager.setExit(false);
+                       canceled = false;
                        dialog.setProgressMessage(waitMessage);
                        dialog.setProgressInfo(AnalyzerLabels.STOP_PROCESS_DLG_PLEASE_WAIT);
+                       dialog.setCancelListener(new DACustomButtonClickEventListener() {
+
+                               @Override
+                               public void handleClickEvent(DACustomButton button) {
+//                                     AnalyzerManager.setExit(true);
+                                       canceled = true;
+                                       ToolbarArea.getInstance().stopTrace();
+                               }
+                       });
                }
 
                Thread thread = new Thread(new StartProcessManager());
                thread.start();
        }
-
+       
+       
        public void setValue(final int nSelect) {
 
                if (null != dialog) {
@@ -60,8 +75,7 @@ public class StartProcessManager implements Runnable {
                System.out.println("appinfo : "
                                + AnalyzerManager.isProcessInfoArrived() + "is exit :"
                                + AnalyzerManager.isExit());
-               while (!AnalyzerManager.isExit()) {
-
+               while ((!AnalyzerManager.isExit()) && (canceled == false)) {
                        if (AnalyzerManager.isRunning()
                                        && AnalyzerManager.isProcessInfoArrived()) {
                                break;
@@ -88,4 +102,12 @@ public class StartProcessManager implements Runnable {
                }
                stopProgress();
        }
+       
+       public boolean isCancelled() {
+               return canceled;
+       }
+
+       public void setCancelDisable() {
+               dialog.setCancelEnabled(false);
+       }
 }
diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProgressDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProgressDialog.java
new file mode 100644 (file)
index 0000000..6deeca7
--- /dev/null
@@ -0,0 +1,153 @@
+package org.tizen.dynamicanalyzer.ui.toolbar;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Shell;
+import org.tizen.dynamicanalyzer.widgets.button.DACustomButtonClickEventListener;
+import org.tizen.dynamicanalyzer.widgets.helper.ColorResources;
+import org.tizen.dynamicanalyzer.widgets.helper.FontResources;
+import org.tizen.dynamicanalyzer.widgets.helper.WidgetUtils;
+import org.tizen.dynamicanalyzer.widgets.progress.Progress;
+
+public class StartProgressDialog {
+       private Shell shell = null;
+       private Progress progress = null;
+
+       private Listener shellMouseListener = new Listener() {
+               boolean down = false;
+               Point downPoint = new Point(0, 0);
+
+               @Override
+               public void handleEvent(Event event) {
+                       int id = event.type;
+                       if (event.widget instanceof Progress) {
+
+                               Shell shell = (Shell) ((Progress) event.widget).getParent();
+                               switch (id) {
+                               case SWT.MouseDown:
+                                       downPoint.x = event.x;
+                                       downPoint.y = event.y;
+                                       down = true;
+                                       break;
+                               case SWT.MouseUp:
+                                       down = false;
+                                       break;
+                               case SWT.MouseMove:
+                                       if (down) {
+                                               Point p = shell.getLocation();
+                                               p.x = p.x + (event.x - downPoint.x);
+                                               p.y = p.y + (event.y - downPoint.y);
+                                               shell.setLocation(p);
+                                       }
+                                       break;
+                               default:
+                                       break;
+                               }
+                       } else {
+                               down = false;
+                       }
+               }
+       };
+       
+       public StartProgressDialog(Shell parent, int style) {
+               shell = new Shell(parent, style);
+               shell.setSize(300, 110);
+               shell.setLayout(new FillLayout());
+
+               progress = new Progress(shell, SWT.NONE, Progress.PROGRESS_STYLE_CANCEL);
+
+               progress.setBarStartColor(ColorResources.STOP_PROGRESS_BAR_START_COLOR);
+               progress.setBarEndColor(ColorResources.STOP_PROGRESS_BAR_END_COLOR);
+               progress.setBarStartBackgroundColor(ColorResources.STOP_PROGRESS_BAR_BG_START_COLOR);
+               progress.setBarEndBackgroundColor(ColorResources.STOP_PROGRESS_BAR_BG_END_COLOR);
+               progress.setBarOutlineColor(ColorResources.STOP_PROGRESS_BAR_OUTLINE_COLOR);
+               progress.setDialogOutlineColor1(ColorResources.STOP_PROGRESS_LINE1_COLOR);
+               progress.setDialogOutlineColor2(ColorResources.STOP_PROGRESS_LINE2_COLOR);
+               progress.setProgressUpperFont(FontResources.STOP_PROGRESS_FONT);
+               progress.setProgressLowerFont(FontResources.PROGRESS_FONT);
+               progress.setProgressUpperFontColor(ColorResources.BLACK);
+               progress.setProgressLowerFontColor(ColorResources.STOP_PROGRESS_INFO_FONT_COLOR);
+               progress.setBarBackgroundColor(ColorResources.STOP_PROGRESS_BACKGROUND_COLOR);
+
+               WidgetUtils.setCenter(shell);
+               
+               shell.getDisplay().addFilter(SWT.MouseDown, shellMouseListener);
+               shell.getDisplay().addFilter(SWT.MouseUp, shellMouseListener);
+               shell.getDisplay().addFilter(SWT.MouseMove, shellMouseListener);
+               
+               shell.addListener(SWT.Traverse, new Listener() {
+                       
+                       @Override
+                       public void handleEvent(Event event) {
+                               if (event.detail == SWT.TRAVERSE_ESCAPE) {
+                                       event.doit = false;
+                               }
+                       }
+               });
+       }
+
+       public void open() {
+               shell.open();
+               ToolbarArea.getInstance().setEnabled(false);
+       }
+
+       public void close() {
+               if (null != progress) {
+                       if (!progress.isDisposed()) {
+                               progress.close();
+                               progress.dispose();
+                       }
+                       progress = null;
+               }
+               if (null != shell) {
+                       if (!shell.isDisposed()) {
+                               shell.dispose();
+                       }
+                       shell = null;
+               }
+
+               ToolbarArea.getInstance().setEnabled(true);
+       }
+
+       public void setProgressMessage(String message) {
+               progress.setUpperText(message);
+       }
+
+       public void setProgressInfo(String infoMessage) {
+               progress.setBottomText(infoMessage);
+       }
+
+       public void setValue(int value) {
+               progress.setValue(value);
+       }
+
+       public void setValues(String progressMessage, int value) {
+               progress.setUpperText(progressMessage);
+               progress.setValue(value);
+       }
+
+       public void errorOccurred(String message, String bottomMessage) {
+               progress.errorOccured(message, bottomMessage);
+       }
+
+       public void setCancelListener(DACustomButtonClickEventListener listener) {
+               if (progress != null) {
+                       progress.setCancelButtonListener(listener);
+               }
+       }
+
+       public void setCancelEnabled(final boolean enable) {
+               Display.getDefault().syncExec(new Runnable() {
+                       @Override
+                       public void run() {
+                               if (null != progress) {
+                                       progress.getCancelButton().setButtonEnabled(enable);
+                               }
+                       }
+               });
+       }
+}
index 22b7b7b..320a4b5 100644 (file)
@@ -58,7 +58,11 @@ public class TraceStartStopThread implements Runnable {
        public void run() {
                if (AnalyzerManager.isRunning()) {
                        HostResult isStarted = traceStart();
-                       if (isStarted.isSuccess()) {
+                       
+                       if (StartProcessManager.getInstance().isCancelled()) { // cancel
+                               traceCancel(AnalyzerLabels.START_TRACE_ERROR);
+                               DACommunicator.stopTrace();
+                       } else if (isStarted.isSuccess()) { // start
                                if (ReplayTraceHandler.isReplay) {
                                        ReplayTraceHandler.setStopAlarm();
                                }
@@ -74,36 +78,42 @@ public class TraceStartStopThread implements Runnable {
                                        }
                                });
                                ShortCutManager.getInstance().setEnabled(true);
-                       } else {
-                               AnalyzerManager.setRunningState(false);
-                               final String msg = isStarted.toString();
-                               Display.getDefault().syncExec(new Runnable() {
-                                       @Override
-                                       public void run() {
-                                               final Shell shell = AnalyzerUtil.getWorkbenchWindow()
-                                                               .getShell();
-                                               DADialog dialog = new DADialog(shell, SWT.NONE);
-                                               dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
-                                               // dialog.setMessage(AnalyzerLabels.START_TRACE_ERROR);
-                                               dialog.setMessage(msg);
-                                               dialog.open();
-
-                                               ToolbarArea.getInstance().setToolbarState(
-                                                               ToolbarArea.TOOLBAR_STATE_READY);
-                                               ToolbarArea.getInstance()
-                                                               .setStartButtonEnablement(true);
-                                               ToolbarArea.getInstance().setSettingsButtonEnablement(
-                                                               true);
-                                               ShortCutManager.getInstance().setEnabled(true);
-                                       }
-                               });
+                       } else { // exception
+                               traceCancel(isStarted.toString());
                        }
+               } else if (StartProcessManager.getInstance().isCancelled()) {
+                       traceCancel(AnalyzerLabels.START_TRACE_ERROR);
+                       DACommunicator.stopTrace();
                } else {
                        traceStop();
                }
                count--;
        }
 
+       private void traceCancel(String message) {
+               AnalyzerManager.setRunningState(false);
+               final String msg = message;
+               Display.getDefault().syncExec(new Runnable() {
+                       @Override
+                       public void run() {
+                               final Shell shell = AnalyzerUtil.getWorkbenchWindow()
+                                               .getShell();
+                               DADialog dialog = new DADialog(shell, SWT.NONE);
+                               dialog.setIcon(ImageResources.DIALOG_WARNING_ICON);
+                               dialog.setMessage(msg);
+                               dialog.open();
+
+                               ToolbarArea.getInstance().setToolbarState(
+                                               ToolbarArea.TOOLBAR_STATE_READY);
+                               ToolbarArea.getInstance()
+                                               .setStartButtonEnablement(true);
+                               ToolbarArea.getInstance().setSettingsButtonEnablement(
+                                               true);
+                               ShortCutManager.getInstance().setEnabled(true);
+                       }
+               });
+       }
+       
        private HostResult traceStart() {
                Display.getDefault().syncExec(new Runnable() {
                        @Override
index 48cab08..d38353d 100644 (file)
@@ -83,7 +83,7 @@ public class ProgressDialog {
                shell.setSize(300, 100);
                shell.setLayout(new FillLayout());
 
-               progress = new Progress(shell, SWT.NONE, Progress.PROGRESS_STYLE_ALL);
+               progress = new Progress(shell, SWT.NONE, Progress.PROGRESS_STYLE_DEFAULT);
                progress.setBarStartColor(ColorResources.STOP_PROGRESS_BAR_START_COLOR);
                progress.setBarEndColor(ColorResources.STOP_PROGRESS_BAR_END_COLOR);
                progress.setBarStartBackgroundColor(ColorResources.STOP_PROGRESS_BAR_BG_START_COLOR);