From 917ee9e31d07b0fe930dc9b2ea715464a90cb665 Mon Sep 17 00:00:00 2001 From: heeyoung Date: Thu, 6 Mar 2014 18:27:39 +0900 Subject: [PATCH] [Title] modify ProgressDialog [Desc.] add the cancel button in ProgressDialog [Issue] - Change-Id: Iedb60098bb856f1c0a82b943a46ba9f3d0915a0b Signed-off-by: heeyoung --- .../widgets/helper/ColorResources.java | 26 +++- .../dynamicanalyzer/widgets/progress/Progress.java | 144 ++++++++++++++++--- .../swap/communicator/Communicator30.java | 11 +- .../swap/logparser/MessageParser.java | 26 ++-- .../ui/toolbar/StartProcessManager.java | 34 ++++- .../ui/toolbar/StartProgressDialog.java | 153 +++++++++++++++++++++ .../ui/toolbar/TraceStartStopThread.java | 58 ++++---- .../dynamicanalyzer/ui/widgets/ProgressDialog.java | 2 +- 8 files changed, 390 insertions(+), 64 deletions(-) create mode 100644 org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProgressDialog.java diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/helper/ColorResources.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/helper/ColorResources.java index f02544a..dc941be 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/helper/ColorResources.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/helper/ColorResources.java @@ -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$ public static Color POPUP_MENU_OUTLINE_STORKE2 = getColor("popup_menu_outline_stroke2", new RGB(255, 255, 255)); //$NON-NLS-1$ - + /*** common button colors ***/ + public static Color BUTTON_DISABLE_COLOR_START = getColor("button_disable_color_start", new RGB(206, 206, 206)); //$NON-NLS-1$ + public static Color BUTTON_DISABLE_COLOR_END = getColor("button_disable_color_end", new RGB(163, 163, 163)); //$NON-NLS-1$ + public static Color BUTTON_NORMAL_COLOR_START = getColor("button_normal_color_start", new RGB(240, 240, 240)); //$NON-NLS-1$ + public static Color BUTTON_NORMAL_COLOR_END = getColor("button_normal_color_end", new RGB(163, 163, 163)); //$NON-NLS-1$ + public static Color BUTTON_HOVER_COLOR_START = getColor("button_hover_color_start", new RGB(240, 240, 240)); //$NON-NLS-1$ + public static Color BUTTON_HOVER_COLOR_END = getColor("button_hover_color_end", new RGB(163, 163, 163)); //$NON-NLS-1$ + public static Color BUTTON_PUSH_COLOR_START = getColor("button_push_color_start", new RGB(163, 163, 163)); //$NON-NLS-1$ + public static Color BUTTON_PUSH_COLOR_END = getColor("button_push_color_end", new RGB(240, 240, 240)); //$NON-NLS-1$ + + public static Color BUTTON_OUTLINE_NORMAL_IN_COLOR = getColor("button_outline_normal_in_color", new RGB(120, 120, 120)); //$NON-NLS-1$ + public static Color BUTTON_OUTLINE_PUSH_IN_COLOR = getColor("button_outline_push_in_color", new RGB(120, 120, 120)); //$NON-NLS-1$ + public static Color BUTTON_OUTLINE_HOVER_IN_COLOR = getColor("button_outline_hover_in_color", new RGB(120, 120, 120)); //$NON-NLS-1$ + public static Color BUTTON_OUTLINE_DISABLE_IN_COLOR = getColor("button_outline_disable_in_color", new RGB(115, 115, 115)); //$NON-NLS-1$ + + public static Color BUTTON_OUTLINE_NORMAL_COLOR = getColor("button_outline_normal_color", new RGB(203, 230, 230)); //$NON-NLS-1$ + public static Color BUTTON_OUTLINE_PUSH_COLOR = getColor("button_outline_push_color", new RGB(203, 203, 203)); //$NON-NLS-1$ + public static Color BUTTON_OUTLINE_HOVER_COLOR = getColor("button_outline_hover_color", new RGB(50, 185, 231)); //$NON-NLS-1$ + public static Color BUTTON_OUTLINE_DISABLE_COLOR = getColor("button_outline_disable_color", new RGB(115, 115, 115)); //$NON-NLS-1$ + + public static Color BUTTON_NORMAL_FONT_COLOR = getColor("button_normal_font_color", new RGB(0, 0, 0)); //$NON-NLS-1$ + public static Color BUTTON_PUSH_FONT_COLOR = getColor("button_push_font_color", new RGB(91, 91, 91)); //$NON-NLS-1$ + public static Color BUTTON_HOVER_FONT_COLOR = getColor("button_hover_font_color", new RGB(91, 91, 91)); //$NON-NLS-1$ + public static Color BUTTON_DISABLE_FONT_COLOR = getColor("button_disable_font_color", new RGB(91, 91, 91)); //$NON-NLS-1$ + // // /** device and application combo specific colors start **/ // public static final Color DEVICE_APPLICATION_ENABLE = WHITE; diff --git a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/progress/Progress.java b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/progress/Progress.java index 7faef11..8128f0d 100644 --- a/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/progress/Progress.java +++ b/org.tizen.dynamicanalyzer.widgets/src/org/tizen/dynamicanalyzer/widgets/progress/Progress.java @@ -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 loadingImage = new ArrayList(); 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; + } } diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java index 155f10a..6f44aff 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/communicator/Communicator30.java @@ -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(); diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java index 5d0d0cd..f41deae 100755 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/swap/logparser/MessageParser.java @@ -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; diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProcessManager.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProcessManager.java index 5c0d5f4..40bc018 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProcessManager.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProcessManager.java @@ -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 index 0000000..6deeca7 --- /dev/null +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/StartProgressDialog.java @@ -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); + } + } + }); + } +} diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/TraceStartStopThread.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/TraceStartStopThread.java index 22b7b7b..320a4b5 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/TraceStartStopThread.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/toolbar/TraceStartStopThread.java @@ -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 diff --git a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ProgressDialog.java b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ProgressDialog.java index 48cab08..d38353d 100644 --- a/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ProgressDialog.java +++ b/org.tizen.dynamicanalyzer/src/org/tizen/dynamicanalyzer/ui/widgets/ProgressDialog.java @@ -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); -- 2.7.4