|
Lines 31-36
Link Here
|
| 31 |
import org.eclipse.core.runtime.IProgressMonitor; |
31 |
import org.eclipse.core.runtime.IProgressMonitor; |
| 32 |
import org.eclipse.core.runtime.IProgressMonitorWithBlocking; |
32 |
import org.eclipse.core.runtime.IProgressMonitorWithBlocking; |
| 33 |
import org.eclipse.core.runtime.IStatus; |
33 |
import org.eclipse.core.runtime.IStatus; |
|
|
34 |
import org.eclipse.core.runtime.ListenerList; |
| 34 |
import org.eclipse.core.runtime.NullProgressMonitor; |
35 |
import org.eclipse.core.runtime.NullProgressMonitor; |
| 35 |
import org.eclipse.core.runtime.OperationCanceledException; |
36 |
import org.eclipse.core.runtime.OperationCanceledException; |
| 36 |
import org.eclipse.core.runtime.QualifiedName; |
37 |
import org.eclipse.core.runtime.QualifiedName; |
|
Lines 96-105
Link Here
|
| 96 |
|
97 |
|
| 97 |
final Object familyKey = new Object(); |
98 |
final Object familyKey = new Object(); |
| 98 |
|
99 |
|
| 99 |
private IJobProgressManagerListener[] listeners = new IJobProgressManagerListener[0]; |
100 |
// list of IJobProgressManagerListener |
| 100 |
|
101 |
private ListenerList listeners = new ListenerList(); |
| 101 |
final Object listenersKey = new Object(); |
102 |
|
| 102 |
|
|
|
| 103 |
IJobChangeListener changeListener; |
103 |
IJobChangeListener changeListener; |
| 104 |
|
104 |
|
| 105 |
static final String PROGRESS_VIEW_NAME = "org.eclipse.ui.views.ProgressView"; //$NON-NLS-1$ |
105 |
static final String PROGRESS_VIEW_NAME = "org.eclipse.ui.views.ProgressView"; //$NON-NLS-1$ |
|
Lines 535-554
Link Here
|
| 535 |
sleepGroup(group,info); |
535 |
sleepGroup(group,info); |
| 536 |
} |
536 |
} |
| 537 |
|
537 |
|
| 538 |
synchronized (listenersKey) { |
538 |
Object[] listenersArray = listeners.getListeners(); |
| 539 |
for (int i = 0; i < listeners.length; i++) { |
539 |
for (int i = 0; i < listenersArray.length; i++) { |
| 540 |
IJobProgressManagerListener listener = listeners[i]; |
540 |
IJobProgressManagerListener listener = (IJobProgressManagerListener) listenersArray[i]; |
| 541 |
// Is this one the user never sees? |
541 |
// Is this one the user never sees? |
| 542 |
if (isNeverDisplaying(info.getJob(), listener.showsDebug())) |
542 |
if (isNeverDisplaying(info.getJob(), listener.showsDebug())) |
| 543 |
continue; |
543 |
continue; |
| 544 |
if (listener.showsDebug()) |
544 |
if (listener.showsDebug()) |
| 545 |
listener.refreshJobInfo(info); |
545 |
listener.refreshJobInfo(info); |
| 546 |
else |
546 |
else |
| 547 |
listener.removeJob(info); |
547 |
listener.removeJob(info); |
| 548 |
|
548 |
|
| 549 |
} |
|
|
| 550 |
} |
549 |
} |
| 551 |
|
|
|
| 552 |
} |
550 |
} |
| 553 |
|
551 |
|
| 554 |
/** |
552 |
/** |
|
Lines 556-575
Link Here
|
| 556 |
* @param group |
554 |
* @param group |
| 557 |
*/ |
555 |
*/ |
| 558 |
private void sleepGroup(GroupInfo group, JobInfo info) { |
556 |
private void sleepGroup(GroupInfo group, JobInfo info) { |
| 559 |
synchronized (listenersKey) { |
557 |
Object[] listenersArray = listeners.getListeners(); |
| 560 |
for (int i = 0; i < listeners.length; i++) { |
558 |
for (int i = 0; i < listenersArray.length; i++) { |
| 561 |
|
559 |
|
| 562 |
IJobProgressManagerListener listener = listeners[i]; |
560 |
IJobProgressManagerListener listener = (IJobProgressManagerListener) listenersArray[i]; |
| 563 |
if (isNeverDisplaying(info.getJob(), listener.showsDebug())) |
561 |
if (isNeverDisplaying(info.getJob(), listener.showsDebug())) |
| 564 |
continue; |
562 |
continue; |
| 565 |
|
563 |
|
| 566 |
if (listener.showsDebug() || group.isActive()) |
564 |
if (listener.showsDebug() || group.isActive()) |
| 567 |
listener.refreshGroup(group); |
565 |
listener.refreshGroup(group); |
| 568 |
else |
566 |
else |
| 569 |
listener.removeGroup(group); |
567 |
listener.removeGroup(group); |
| 570 |
} |
|
|
| 571 |
} |
568 |
} |
| 572 |
|
|
|
| 573 |
} |
569 |
} |
| 574 |
|
570 |
|
| 575 |
/** |
571 |
/** |
|
Lines 641-657
Link Here
|
| 641 |
* @param listener |
637 |
* @param listener |
| 642 |
*/ |
638 |
*/ |
| 643 |
void addListener(IJobProgressManagerListener listener) { |
639 |
void addListener(IJobProgressManagerListener listener) { |
| 644 |
|
640 |
listeners.add(listener); |
| 645 |
synchronized (listenersKey) { |
|
|
| 646 |
ArrayList newListeners = new ArrayList(listeners.length + 1); |
| 647 |
for (int i = 0; i < listeners.length; i++) { |
| 648 |
newListeners.add(listeners[i]); |
| 649 |
} |
| 650 |
newListeners.add(listener); |
| 651 |
listeners = new IJobProgressManagerListener[newListeners.size()]; |
| 652 |
newListeners.toArray(listeners); |
| 653 |
} |
| 654 |
|
| 655 |
} |
641 |
} |
| 656 |
|
642 |
|
| 657 |
/** |
643 |
/** |
|
Lines 661-677
Link Here
|
| 661 |
* @param listener |
647 |
* @param listener |
| 662 |
*/ |
648 |
*/ |
| 663 |
void removeListener(IJobProgressManagerListener listener) { |
649 |
void removeListener(IJobProgressManagerListener listener) { |
| 664 |
synchronized (listenersKey) { |
650 |
listeners.remove(listener); |
| 665 |
ArrayList newListeners = new ArrayList(); |
|
|
| 666 |
for (int i = 0; i < listeners.length; i++) { |
| 667 |
if (listeners[i].equals(listener)) { |
| 668 |
continue; |
| 669 |
} |
| 670 |
newListeners.add(listeners[i]); |
| 671 |
} |
| 672 |
listeners = new IJobProgressManagerListener[newListeners.size()]; |
| 673 |
newListeners.toArray(listeners); |
| 674 |
} |
| 675 |
} |
651 |
} |
| 676 |
|
652 |
|
| 677 |
/** |
653 |
/** |
|
Lines 711-722
Link Here
|
| 711 |
refreshGroup(group); |
687 |
refreshGroup(group); |
| 712 |
} |
688 |
} |
| 713 |
|
689 |
|
| 714 |
synchronized (listenersKey) { |
690 |
Object[] listenersArray = listeners.getListeners(); |
| 715 |
for (int i = 0; i < listeners.length; i++) { |
691 |
for (int i = 0; i < listenersArray.length; i++) { |
| 716 |
IJobProgressManagerListener listener = listeners[i]; |
692 |
IJobProgressManagerListener listener = (IJobProgressManagerListener) listenersArray[i]; |
| 717 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
693 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
| 718 |
listener.refreshJobInfo(info); |
694 |
listener.refreshJobInfo(info); |
| 719 |
} |
|
|
| 720 |
} |
695 |
} |
| 721 |
} |
696 |
} |
| 722 |
} |
697 |
} |
|
Lines 728-737
Link Here
|
| 728 |
*/ |
703 |
*/ |
| 729 |
public void refreshGroup(GroupInfo info) { |
704 |
public void refreshGroup(GroupInfo info) { |
| 730 |
|
705 |
|
| 731 |
synchronized (listenersKey) { |
706 |
Object[] listenersArray = listeners.getListeners(); |
| 732 |
for (int i = 0; i < listeners.length; i++) { |
707 |
for (int i = 0; i < listenersArray.length; i++) { |
| 733 |
listeners[i].refreshGroup(info); |
708 |
((IJobProgressManagerListener)listenersArray[i]).refreshGroup(info); |
| 734 |
} |
|
|
| 735 |
} |
709 |
} |
| 736 |
} |
710 |
} |
| 737 |
|
711 |
|
|
Lines 742-751
Link Here
|
| 742 |
public void refreshAll() { |
716 |
public void refreshAll() { |
| 743 |
|
717 |
|
| 744 |
pruneStaleJobs(); |
718 |
pruneStaleJobs(); |
| 745 |
synchronized (listenersKey) { |
719 |
Object[] listenersArray = listeners.getListeners(); |
| 746 |
for (int i = 0; i < listeners.length; i++) { |
720 |
for (int i = 0; i < listenersArray.length; i++) { |
| 747 |
listeners[i].refreshAll(); |
721 |
((IJobProgressManagerListener)listenersArray[i]).refreshAll(); |
| 748 |
} |
|
|
| 749 |
} |
722 |
} |
| 750 |
|
723 |
|
| 751 |
} |
724 |
} |
|
Lines 766-780
Link Here
|
| 766 |
} |
739 |
} |
| 767 |
} |
740 |
} |
| 768 |
|
741 |
|
| 769 |
synchronized (listenersKey) { |
742 |
Object[] listenersArray = listeners.getListeners(); |
| 770 |
for (int i = 0; i < listeners.length; i++) { |
743 |
for (int i = 0; i < listenersArray.length; i++) { |
| 771 |
IJobProgressManagerListener listener = listeners[i]; |
744 |
IJobProgressManagerListener listener = (IJobProgressManagerListener) listenersArray[i]; |
| 772 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
745 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
| 773 |
listener.removeJob(info); |
746 |
listener.removeJob(info); |
| 774 |
} |
|
|
| 775 |
} |
747 |
} |
| 776 |
} |
748 |
} |
| 777 |
|
|
|
| 778 |
} |
749 |
} |
| 779 |
|
750 |
|
| 780 |
/** |
751 |
/** |
|
Lines 785-794
Link Here
|
| 785 |
*/ |
756 |
*/ |
| 786 |
public void removeGroup(GroupInfo group) { |
757 |
public void removeGroup(GroupInfo group) { |
| 787 |
|
758 |
|
| 788 |
synchronized (listenersKey) { |
759 |
Object[] listenersArray = listeners.getListeners(); |
| 789 |
for (int i = 0; i < listeners.length; i++) { |
760 |
for (int i = 0; i < listenersArray.length; i++) { |
| 790 |
listeners[i].removeGroup(group); |
761 |
((IJobProgressManagerListener)listenersArray[i]).removeGroup(group); |
| 791 |
} |
|
|
| 792 |
} |
762 |
} |
| 793 |
} |
763 |
} |
| 794 |
|
764 |
|
|
Lines 804-815
Link Here
|
| 804 |
} |
774 |
} |
| 805 |
|
775 |
|
| 806 |
jobs.put(info.getJob(), info); |
776 |
jobs.put(info.getJob(), info); |
| 807 |
synchronized (listenersKey) { |
777 |
Object[] listenersArray = listeners.getListeners(); |
| 808 |
for (int i = 0; i < listeners.length; i++) { |
778 |
for (int i = 0; i < listenersArray.length; i++) { |
| 809 |
IJobProgressManagerListener listener = listeners[i]; |
779 |
IJobProgressManagerListener listener = (IJobProgressManagerListener) listenersArray[i]; |
| 810 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
780 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
| 811 |
listener.addJob(info); |
781 |
listener.addJob(info); |
| 812 |
} |
|
|
| 813 |
} |
782 |
} |
| 814 |
} |
783 |
} |
| 815 |
} |
784 |
} |
|
Lines 1045-1053
Link Here
|
| 1045 |
* Shutdown the receiver. |
1014 |
* Shutdown the receiver. |
| 1046 |
*/ |
1015 |
*/ |
| 1047 |
private void shutdown() { |
1016 |
private void shutdown() { |
| 1048 |
synchronized (listenersKey) { |
1017 |
listeners.clear(); |
| 1049 |
this.listeners = new IJobProgressManagerListener[0]; |
|
|
| 1050 |
} |
| 1051 |
Job.getJobManager().setProgressProvider(null); |
1018 |
Job.getJobManager().setProgressProvider(null); |
| 1052 |
Job.getJobManager().removeJobChangeListener(this.changeListener); |
1019 |
Job.getJobManager().removeJobChangeListener(this.changeListener); |
| 1053 |
} |
1020 |
} |