blob: 4a6d63f6595bb9e7d5ac573c476760e939c308f1 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 xored software, Inc.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* xored software, Inc. - initial API and Implementation (Alex Panchenko)
*******************************************************************************/
package org.eclipse.dltk.debug.ui.handlers;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.dltk.compiler.util.Util;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IconAndMessageDialog;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class LaunchStatusDialog extends IconAndMessageDialog {
private final IProgressMonitor monitor;
public LaunchStatusDialog(Shell shell, IProgressMonitor monitor) {
super(shell);
this.monitor = monitor;
setShellStyle(getDefaultOrientation() | SWT.BORDER | SWT.TITLE
| SWT.APPLICATION_MODAL);
message = HandlerMessages.LaunchStatusDialog_message;
}
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText(HandlerMessages.LaunchStatusDialog_title);
}
protected Image getImage() {
return getWarningImage();
}
private String commandLine;
private Label elapsedTimeValue;
public void updateElapsedTime(long elapsedTime) {
if (elapsedTimeValue == null || elapsedTimeValue.isDisposed()) {
return;
}
int h = (int) (elapsedTime / 1000 / 60 / 60);
elapsedTime -= h * 1000 * 60 * 60;
int m = (int) (elapsedTime / 1000 / 60);
elapsedTime -= m * 1000 * 60;
int s = (int) (elapsedTime / 1000);
final StringBuffer sb = new StringBuffer();
if (h < 10)
sb.append('0');
sb.append(h);
sb.append(':');
if (m < 10)
sb.append('0');
sb.append(m);
sb.append(':');
if (s < 10)
sb.append('0');
sb.append(s);
elapsedTimeValue.setText(sb.toString());
}
protected Control createDialogArea(Composite parent) {
createMessageArea(parent);
final Composite composite = new Composite(parent, SWT.NONE);
final GridLayout layout = new GridLayout(2, false);
composite.setLayout(layout);
final GridData compositeData = new GridData(GridData.FILL_BOTH);
compositeData.horizontalSpan = 2;
composite.setLayoutData(compositeData);
if (commandLine != null) {
final Label commandLinePrompt = new Label(composite, SWT.NONE);
commandLinePrompt
.setText(HandlerMessages.LaunchStatusDialog_commandLinePrompt);
final GridData commandLineData = new GridData(
GridData.FILL_HORIZONTAL);
commandLineData.horizontalSpan = 2;
commandLinePrompt.setLayoutData(commandLineData);
final Text commandLineValue = new Text(composite, SWT.WRAP
| SWT.READ_ONLY | SWT.BORDER);
commandLineValue.setText(commandLine);
final GridData commandLineValueData = new GridData(
GridData.FILL_HORIZONTAL);
commandLineValueData.horizontalSpan = 2;
commandLineValueData.widthHint = 500;
commandLineValue.setLayoutData(commandLineValueData);
}
final Label elapsedTimePrompt = new Label(composite, SWT.NONE);
elapsedTimePrompt
.setText(HandlerMessages.LaunchStatusDialog_elapsedTimePrompt);
elapsedTimeValue = new Label(composite, SWT.NONE);
elapsedTimeValue.setText(Util.EMPTY_STRING);
elapsedTimeValue.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
return parent;
}
protected void createButtonsForButtonBar(Composite parent) {
createCancelButton(parent);
}
protected void createCancelButton(Composite parent) {
createButton(parent, IDialogConstants.CANCEL_ID,
IDialogConstants.CANCEL_LABEL, true);
}
protected void cancelPressed() {
this.monitor.setCanceled(true);
close();
}
public void setCommandLine(String commandLine) {
this.commandLine = commandLine;
}
/**
* @since 2.0
*/
public void setLaunchName(String launchName) {
if (launchName != null) {
message = NLS.bind(HandlerMessages.LaunchStatusDialog_message0,
launchName);
}
}
}