diff options
author | Tod Creasey | 2003-07-04 16:52:40 +0000 |
---|---|---|
committer | Tod Creasey | 2003-07-04 16:52:40 +0000 |
commit | 4f2d3c2567cabfd8582db1facb01282487f3451e (patch) | |
tree | a7fd1d10656bf0733421b288e22e18c35891e9d8 | |
parent | fc06e502214f6612456b61a204361cc36d1bffd5 (diff) | |
download | eclipse.platform.ui-4f2d3c2567cabfd8582db1facb01282487f3451e.tar.gz eclipse.platform.ui-4f2d3c2567cabfd8582db1facb01282487f3451e.tar.xz eclipse.platform.ui-4f2d3c2567cabfd8582db1facb01282487f3451e.zip |
Updated for new job namesRoot_ZTCDecoration
11 files changed, 268 insertions, 128 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationScheduler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationScheduler.java index 56c8e69e229..f1f805782c9 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationScheduler.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/decorators/DecorationScheduler.java @@ -159,7 +159,7 @@ public class DecorationScheduler { UIJob job = new UIJob(WorkbenchMessages.getString("DecorationScheduler.UpdateJobName")) { //$NON-NLS-1$ public IStatus runInUIThread(IProgressMonitor monitor) { - + if (pendingUpdate.isEmpty()) return Status.OK_STATUS; synchronized (resultLock) { @@ -168,15 +168,19 @@ public class DecorationScheduler { Object[] elements = pendingUpdate.toArray( new Object[pendingUpdate.size()]); + monitor.beginTask(WorkbenchMessages.getString("DecorationScheduler.UpdatingTask"),elements.length + 20); //$NON-NLS-1$ pendingUpdate.clear(); + monitor.worked(20); decoratorManager.fireListeners( new LabelProviderChangedEvent( decoratorManager, elements)); + monitor.worked(elements.length); //Other decoration requests may have occured due to //updates. Only clear the results if there are none pending. if (awaitingDecoration.isEmpty()) resultCache.clear(); + monitor.done(); } return Status.OK_STATUS; } @@ -221,12 +225,15 @@ public class DecorationScheduler { * @see org.eclipse.core.runtime.jobs.Job#run(org.eclipse.core.runtime.IProgressMonitor) */ public IStatus run(IProgressMonitor monitor) { + monitor.beginTask(WorkbenchMessages.getString("DecorationScheduler.CalculatingTask"),100); //$NON-NLS-1$ //will block if there are no resources to be decorated DecorationReference reference; + monitor.worked(20); while ((reference = nextElement()) != null) { DecorationBuilder cacheResult = new DecorationBuilder(); + monitor.subTask(WorkbenchMessages.getString("DecorationScheduler.DecoratingSubtask") + reference.toString()); //$NON-NLS-1$ //Don't decorate if there is already a pending result Object element = reference.getElement(); Object adapted = reference.getAdaptedElement(); @@ -309,7 +316,8 @@ public class DecorationScheduler { scheduled = false; decorated(); } - } + } + monitor.worked(80); return Status.OK_STATUS; }; }; diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties index f87c1862365..29457bbd9e0 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/messages.properties @@ -1490,3 +1490,6 @@ DecorationScheduler.UpdateJobName=Update for Decoration Completion DecorationScheduler.CalculationJobName=Decoration Calculation DeferredTreeContentManager.FetchChildrenJob=Fetch Children DeferredTreeContentManager.AddChildrenJob=Add Children +DecorationScheduler.UpdatingTask=Updating +DecorationScheduler.CalculatingTask=Calculating +DecorationScheduler.DecoratingSubtask=Decorating diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationItem.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationItem.java index f10bdcf49f2..b9dacd56430 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationItem.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/AnimationItem.java @@ -19,13 +19,13 @@ import org.eclipse.core.runtime.*; import org.eclipse.core.runtime.jobs.*; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTException; -import org.eclipse.swt.accessibility.*; import org.eclipse.swt.accessibility.AccessibleControlAdapter; -import org.eclipse.swt.accessibility.AccessibleControlListener; +import org.eclipse.swt.accessibility.AccessibleControlEvent; import org.eclipse.swt.events.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.widgets.*; import org.eclipse.ui.*; +import org.eclipse.ui.internal.progress.ProgressMessages; public class AnimationItem { @@ -180,9 +180,9 @@ public class AnimationItem { */ public void getValue(AccessibleControlEvent arg0) { if(animated) - arg0.result = "In progress"; + arg0.result = ProgressMessages.getString("AnimationItem.InProgressStatus"); //$NON-NLS-1$ else - arg0.result = "Nothing running"; + arg0.result = ProgressMessages.getString("AnimationItem.NotRunningStatus"); //$NON-NLS-1$ } }); diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java index bc5270b5f80..04316a6ce22 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfo.java @@ -12,106 +12,61 @@ package org.eclipse.ui.internal.progress; import java.util.ArrayList; +import org.eclipse.core.runtime.jobs.Job; + /** * JobInfo is the class that keeps track of the tree structure * for objects that display job status in a tree. */ -class JobInfo { - String name; +class JobInfo extends JobTreeElement{ ArrayList children = new ArrayList(); - JobInfo parent; - JobInfo currentChild; - - /** - * Create a new instance of the receiver with the supplied - * task name as a child of parentObject, - * @param taskName - * @param parentObject - */ - JobInfo(String taskName, JobInfo parentObject) { - this(taskName); - parent = parentObject; - parent.addChild(this); - } + Job job; + TaskInfo taskInfo; /** * Create a top level JobInfo. * @param taskName */ - JobInfo(String taskName) { - name = taskName; - } - - /** - * Return the name of the receiver. - * @return String - */ - String getName() { - return name; + JobInfo(Job enclosingJob) { + this.job = enclosingJob; } - /** - * Return the displayString for the receiver. - * @return + /* (non-Javadoc) + * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayString() */ String getDisplayString() { - return getName(); - } - - /** - * Return whether or not there is a parent for the receiver. - * @return boolean - */ - boolean hasParent() { - return parent != null; + return job.getName(); } - /** - * Return whether or not the receiver has children. - * @return boolean - */ - boolean hasChildren() { - return children.size() > 0; - } - - /** - * Return the children of the receiver. - * @return Object[] + /* (non-Javadoc) + * @see org.eclipse.ui.internal.progress.JobTreeElement#getChildren() */ Object[] getChildren() { return children.toArray(); } - - /** - * Return the parent of the receiver. - * @return JobInfo or <code>null</code>. + + /* (non-Javadoc) + * @see org.eclipse.ui.internal.progress.JobTreeElement#hasChildren() */ - JobInfo getParent() { - return parent; + boolean hasChildren() { + return children.size() > 0; } /** - * Add the supplied child to the receiver. - * @param child + * Begin the task called taskName with the supplied work. + * @param taskName + * @param work */ - void addChild(JobInfo child) { - children.add(child); - currentChild = child; + void beginTask(String taskName, int work) { + taskInfo = new TaskInfo(job, taskName, work); } /** - * Add the new job info to the lowest level child you - * currently have. If there is a currentChild add it to them, - * if not add it to the receiver. - * @param JobInfo - * @return JobInfo the job info this gets added to + * Add the subtask to the receiver. + * @param subTaskName */ - JobInfo addToLeafChild(JobInfo child) { - if (currentChild == null) { - addChild(child); - return this; - } else - return currentChild.addToLeafChild(child); + void addSubTask(String subTaskName) { + children.add(subTaskName); } /** @@ -119,15 +74,22 @@ class JobInfo { * @param workIncrement */ void addWork(double workIncrement) { - //No work on a simple label- pass it down - if (currentChild != null) - currentChild.addWork(workIncrement); + if (taskInfo != null) + taskInfo.addWork(workIncrement); } /** - * Clear the collection of children. + * Clear the collection of subtasks an the task info. */ - void clearChildren(){ + void clear() { children.clear(); + this.taskInfo = null; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.internal.progress.JobTreeElement#getParent() + */ + Object getParent() { + return null; } } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobProgressManager.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobProgressManager.java index a0d0c12827c..ebe03a5c408 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobProgressManager.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobProgressManager.java @@ -105,7 +105,7 @@ public class JobProgressManager implements IProgressProvider { * @see org.eclipse.core.runtime.IProgressMonitor#subTask(java.lang.String) */ public void subTask(String name) { - Iterator iterator = providers.iterator(); + Iterator iterator = providers.iterator(); while (iterator.hasNext()) { ProgressContentProvider provider = (ProgressContentProvider) iterator.next(); diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java new file mode 100644 index 00000000000..f83abadb25e --- /dev/null +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobTreeElement.java @@ -0,0 +1,43 @@ +/******************************************************************************* + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.ui.internal.progress; + +/** + * The JobTreeElement is the abstract superclass of items + * displayed in the tree. + */ +abstract class JobTreeElement { + + /** + * Return the parent of this object. + * @return Object + */ + abstract Object getParent(); + + /** + * Return whether or not the receiver has children. + * @return boolean + */ + abstract boolean hasChildren(); + + /** + * Return the children of the receiver. + * @return Object[] + */ + abstract Object[] getChildren(); + + /** + * Return the displayString for the receiver. + * @return + */ + abstract String getDisplayString(); + +} diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressContentProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressContentProvider.java index a8f2ec575bb..4686933a4fc 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressContentProvider.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressContentProvider.java @@ -30,6 +30,16 @@ public class ProgressContentProvider implements ITreeContentProvider { public ProgressContentProvider(TreeViewer mainViewer) { listener = new JobChangeAdapter() { + + /* (non-Javadoc) + * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#scheduled(org.eclipse.core.runtime.jobs.IJobChangeEvent) + */ + public void scheduled(IJobChangeEvent event) { + jobs.put(event.getJob(),new JobInfo(event.getJob())); + refreshViewer(null); + } + + /* (non-Javadoc) * @see org.eclipse.core.runtime.jobs.JobChangeAdapter#done(org.eclipse.core.runtime.jobs.IJobChangeEvent) */ @@ -47,21 +57,21 @@ public class ProgressContentProvider implements ITreeContentProvider { * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */ public Object[] getChildren(Object parentElement) { - return ((JobInfo) parentElement).getChildren(); + return ((JobTreeElement) parentElement).getChildren(); } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) */ public Object getParent(Object element) { - return ((JobInfo) element).getParent(); + return ((JobTreeElement) element).getParent(); } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) */ public boolean hasChildren(Object element) { - return ((JobInfo) element).hasChildren(); + return ((JobTreeElement) element).hasChildren(); } /* (non-Javadoc) @@ -86,21 +96,68 @@ public class ProgressContentProvider implements ITreeContentProvider { public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } - /* (non-Javadoc) - * @see org.eclipse.core.runtime.jobs.IProgressListener#beginTask(org.eclipse.core.runtime.jobs.Job, java.lang.String, int) + /** + * A task has begun on job so create a new JobInfo for it. + * @param job + * @param taskName + * @param totalWork */ - public void beginTask(Job job, String name, int totalWork) { - if (job == null || job instanceof AnimateJob) + public void beginTask(Job job, String taskName, int totalWork) { + if (isNonDisplayableJob(job)) return; - if (totalWork == IProgressMonitor.UNKNOWN) - jobs.put(job, new JobInfo(name)); - else - jobs.put(job, new JobInfoWithProgress(name, totalWork)); + JobInfo info = getJobInfo(job); + info.beginTask(taskName, totalWork); + refreshViewer(null); } - /* (non-Javadoc) - * @see org.eclipse.core.runtime.jobs.IProgressListener#subTask(org.eclipse.core.runtime.jobs.Job, java.lang.String) + /** + * Get the JobInfo for the job. If it does not exist + * create it. + * @param job + * @return + */ + private JobInfo getJobInfo(Job job) { + JobInfo info = (JobInfo) jobs.get(job); + if (info == null) { + info = new JobInfo(job); + jobs.put(job, info); + } + return info; + } + /** + * Return whether or not this job is displayable. + * @param job + * @return + */ + private boolean isNonDisplayableJob(Job job) { + return job == null || job instanceof AnimateJob; + } + /** + * Reset the name of the task to task name. + * @param job + * @param taskName + * @param totalWork + */ + public void setTaskName(Job job, String taskName, int totalWork) { + if (isNonDisplayableJob(job)) + return; + + JobInfo info = getJobInfo(job); + if (info.taskInfo == null) { + beginTask(job, taskName, totalWork); + return; + } else + info.taskInfo.setTaskName(taskName); + + info.clear(); + refreshViewer(info); + } + + /** + * Create a new subtask on jg + * @param job + * @param name */ public void subTask(Job job, String name) { if (job == null) @@ -110,26 +167,14 @@ public class ProgressContentProvider implements ITreeContentProvider { return; if (name.length() == 0) return; - JobInfo info = getInfo(job); - - if (info == null) - return; + JobInfo info = getJobInfo(job); - info.clearChildren(); - info.addChild(new JobInfo(name)); + info.clear(); + info.addSubTask(name); refreshViewer(info); } - /** - * Get the JobInfo currently being collected for job. - * @param job - * @return - */ - private JobInfo getInfo(Job job) { - return ((JobInfo) jobs.get(job)); - } - /* (non-Javadoc) * @see org.eclipse.core.runtime.jobs.IProgressListener#worked(org.eclipse.core.runtime.jobs.Job, int) */ @@ -139,9 +184,11 @@ public class ProgressContentProvider implements ITreeContentProvider { if (job instanceof AnimateJob) return; - JobInfo info = getInfo(job); - info.addWork(work); - refreshViewer(info); + JobInfo info = getJobInfo(job); + if (info.taskInfo != null) { + info.addWork(work); + refreshViewer(info); + } } /** diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressLabelProvider.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressLabelProvider.java index d087e7db0eb..49cf2b46d49 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressLabelProvider.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/ProgressLabelProvider.java @@ -32,7 +32,7 @@ public class ProgressLabelProvider extends LabelProvider { * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) */ public String getText(Object element) { - return ((JobInfo) element).getDisplayString(); + return ((JobTreeElement) element).getDisplayString(); } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java new file mode 100644 index 00000000000..50722e0f747 --- /dev/null +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/SubTaskInfo.java @@ -0,0 +1,70 @@ +/******************************************************************************* + * Copyright (c) 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.ui.internal.progress; + +import org.eclipse.core.runtime.jobs.Job; + +/** + * SubTaskInfo is the class that displays a subtask in the + * tree. + */ +class SubTaskInfo extends JobTreeElement { + + protected String taskName; + Job job; + + /** + * Create a new instance of the receiver. + * @param parentJob + * @param name + */ + SubTaskInfo(Job parentJob, String name) { + taskName = name; + job = parentJob; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.internal.progress.JobTreeElement#getChildren() + */ + Object[] getChildren() { + return new Object[0]; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.internal.progress.JobTreeElement#getDisplayString() + */ + String getDisplayString() { + return taskName; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.internal.progress.JobTreeElement#hasChildren() + */ + boolean hasChildren() { + return false; + } + + /** + * Set the taskName of the receiver. + * @param taskName + */ + void setTaskName(String name) { + this.taskName = name; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.internal.progress.JobTreeElement#getParent() + */ + Object getParent() { + return job; + } + +} diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfoWithProgress.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/TaskInfo.java index 4f2fcd4c934..f928b04b138 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/JobInfoWithProgress.java +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/TaskInfo.java @@ -10,24 +10,28 @@ *******************************************************************************/ package org.eclipse.ui.internal.progress; -import org.eclipse.swt.widgets.ProgressBar; +import org.eclipse.core.runtime.jobs.Job; /** - * The JobInfoWithProgress is a JobInfo that also keeps track of progress. + * The TaskInfo is the info on a task with a job. It is + * assumed that there is only one task running at a time - + * any previous tasks in a Job will be deleted. */ -public class JobInfoWithProgress extends JobInfo { +public class TaskInfo extends SubTaskInfo{ double preWork = 0; int totalWork = 0; - ProgressBar indicator; + + /** * Create a new instance of the receiver with the supplied total - * work. + * work and task name. + * @param parentJob * @param taskName * @param total */ - JobInfoWithProgress(String taskName, int total) { - super(taskName); + TaskInfo(Job parentJob, String taskName, int total) { + super(parentJob,taskName); totalWork = total; } @@ -40,14 +44,15 @@ public class JobInfoWithProgress extends JobInfo { } - /* (non-Javadoc) - * @see org.eclipse.ui.internal.progress.JobInfo#getDisplayString() + /** + * Get the display string for the task. */ String getDisplayString() { int done = (int) (preWork * 100 / totalWork); - String[] messageValues = new String[2]; - messageValues[0] = super.getDisplayString(); - messageValues[1] = String.valueOf(done); + String[] messageValues = new String[3]; + messageValues[0] = job.getName(); + messageValues[1] = taskName; + messageValues[2] = String.valueOf(done); return ProgressMessages.format("JobInfo.DoneMessage",messageValues); //$NON-NLS-1$ } diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties index 268f2ceaf4d..65e413e150b 100644 --- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties +++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/progress/messages.properties @@ -1,9 +1,11 @@ AnimatedCanvas.JobInvocationError=Error invoking job PendingUpdateAdapter.PendingLabel=Pending... -JobInfo.DoneMessage = {0}: {1}% done +JobInfo.DoneMessage = {0}: {1}: {2}% done Error = Error UIJob.displayNotSet=Display must be set DeferredTreeContentManager.NotDeferred=Not an IDeferredWorkbenchAdapter DeferredTreeContentManager.AddingChildren=Adding children DeferredTreeContentManager.RemovingProgress=Removing placeholder AnimateJob.JobName=Animation +AnimationItem.InProgressStatus=In progress +AnimationItem.NotRunningStatus=Nothing running |