|
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 98-107
Link Here
|
| 98 |
|
99 |
|
| 99 |
final Object familyKey = new Object(); |
100 |
final Object familyKey = new Object(); |
| 100 |
|
101 |
|
| 101 |
private IJobProgressManagerListener[] listeners = new IJobProgressManagerListener[0]; |
102 |
// list of IJobProgressManagerListener |
| 102 |
|
103 |
private ListenerList listeners = new ListenerList(); |
| 103 |
final Object listenersKey = new Object(); |
104 |
|
| 104 |
|
|
|
| 105 |
IJobChangeListener changeListener; |
105 |
IJobChangeListener changeListener; |
| 106 |
|
106 |
|
| 107 |
static final String PROGRESS_VIEW_NAME = "org.eclipse.ui.views.ProgressView"; //$NON-NLS-1$ |
107 |
static final String PROGRESS_VIEW_NAME = "org.eclipse.ui.views.ProgressView"; //$NON-NLS-1$ |
|
Lines 556-575
Link Here
|
| 556 |
sleepGroup(group,info); |
556 |
sleepGroup(group,info); |
| 557 |
} |
557 |
} |
| 558 |
|
558 |
|
| 559 |
synchronized (listenersKey) { |
559 |
Object[] listenersArray = listeners.getListeners(); |
| 560 |
for (int i = 0; i < listeners.length; i++) { |
560 |
for (int i = 0; i < listenersArray.length; i++) { |
| 561 |
IJobProgressManagerListener listener = listeners[i]; |
561 |
IJobProgressManagerListener listener = (IJobProgressManagerListener) listenersArray[i]; |
| 562 |
// Is this one the user never sees? |
562 |
// Is this one the user never sees? |
| 563 |
if (isNeverDisplaying(info.getJob(), listener.showsDebug())) |
563 |
if (isNeverDisplaying(info.getJob(), listener.showsDebug())) |
| 564 |
continue; |
564 |
continue; |
| 565 |
if (listener.showsDebug()) |
565 |
if (listener.showsDebug()) |
| 566 |
listener.refreshJobInfo(info); |
566 |
listener.refreshJobInfo(info); |
| 567 |
else |
567 |
else |
| 568 |
listener.removeJob(info); |
568 |
listener.removeJob(info); |
| 569 |
|
569 |
|
| 570 |
} |
|
|
| 571 |
} |
570 |
} |
| 572 |
|
|
|
| 573 |
} |
571 |
} |
| 574 |
|
572 |
|
| 575 |
/** |
573 |
/** |
|
Lines 577-596
Link Here
|
| 577 |
* @param group |
575 |
* @param group |
| 578 |
*/ |
576 |
*/ |
| 579 |
private void sleepGroup(GroupInfo group, JobInfo info) { |
577 |
private void sleepGroup(GroupInfo group, JobInfo info) { |
| 580 |
synchronized (listenersKey) { |
578 |
Object[] listenersArray = listeners.getListeners(); |
| 581 |
for (int i = 0; i < listeners.length; i++) { |
579 |
for (int i = 0; i < listenersArray.length; i++) { |
| 582 |
|
580 |
|
| 583 |
IJobProgressManagerListener listener = listeners[i]; |
581 |
IJobProgressManagerListener listener = (IJobProgressManagerListener) listenersArray[i]; |
| 584 |
if (isNeverDisplaying(info.getJob(), listener.showsDebug())) |
582 |
if (isNeverDisplaying(info.getJob(), listener.showsDebug())) |
| 585 |
continue; |
583 |
continue; |
| 586 |
|
584 |
|
| 587 |
if (listener.showsDebug() || group.isActive()) |
585 |
if (listener.showsDebug() || group.isActive()) |
| 588 |
listener.refreshGroup(group); |
586 |
listener.refreshGroup(group); |
| 589 |
else |
587 |
else |
| 590 |
listener.removeGroup(group); |
588 |
listener.removeGroup(group); |
| 591 |
} |
|
|
| 592 |
} |
589 |
} |
| 593 |
|
|
|
| 594 |
} |
590 |
} |
| 595 |
|
591 |
|
| 596 |
/** |
592 |
/** |
|
Lines 662-678
Link Here
|
| 662 |
* @param listener |
658 |
* @param listener |
| 663 |
*/ |
659 |
*/ |
| 664 |
void addListener(IJobProgressManagerListener listener) { |
660 |
void addListener(IJobProgressManagerListener listener) { |
| 665 |
|
661 |
listeners.add(listener); |
| 666 |
synchronized (listenersKey) { |
|
|
| 667 |
ArrayList newListeners = new ArrayList(listeners.length + 1); |
| 668 |
for (int i = 0; i < listeners.length; i++) { |
| 669 |
newListeners.add(listeners[i]); |
| 670 |
} |
| 671 |
newListeners.add(listener); |
| 672 |
listeners = new IJobProgressManagerListener[newListeners.size()]; |
| 673 |
newListeners.toArray(listeners); |
| 674 |
} |
| 675 |
|
| 676 |
} |
662 |
} |
| 677 |
|
663 |
|
| 678 |
/** |
664 |
/** |
|
Lines 682-698
Link Here
|
| 682 |
* @param listener |
668 |
* @param listener |
| 683 |
*/ |
669 |
*/ |
| 684 |
void removeListener(IJobProgressManagerListener listener) { |
670 |
void removeListener(IJobProgressManagerListener listener) { |
| 685 |
synchronized (listenersKey) { |
671 |
listeners.remove(listener); |
| 686 |
ArrayList newListeners = new ArrayList(); |
|
|
| 687 |
for (int i = 0; i < listeners.length; i++) { |
| 688 |
if (listeners[i].equals(listener)) { |
| 689 |
continue; |
| 690 |
} |
| 691 |
newListeners.add(listeners[i]); |
| 692 |
} |
| 693 |
listeners = new IJobProgressManagerListener[newListeners.size()]; |
| 694 |
newListeners.toArray(listeners); |
| 695 |
} |
| 696 |
} |
672 |
} |
| 697 |
|
673 |
|
| 698 |
/** |
674 |
/** |
|
Lines 732-743
Link Here
|
| 732 |
refreshGroup(group); |
708 |
refreshGroup(group); |
| 733 |
} |
709 |
} |
| 734 |
|
710 |
|
| 735 |
synchronized (listenersKey) { |
711 |
Object[] listenersArray = listeners.getListeners(); |
| 736 |
for (int i = 0; i < listeners.length; i++) { |
712 |
for (int i = 0; i < listenersArray.length; i++) { |
| 737 |
IJobProgressManagerListener listener = listeners[i]; |
713 |
IJobProgressManagerListener listener = (IJobProgressManagerListener) listenersArray[i]; |
| 738 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
714 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
| 739 |
listener.refreshJobInfo(info); |
715 |
listener.refreshJobInfo(info); |
| 740 |
} |
|
|
| 741 |
} |
716 |
} |
| 742 |
} |
717 |
} |
| 743 |
} |
718 |
} |
|
Lines 749-758
Link Here
|
| 749 |
*/ |
724 |
*/ |
| 750 |
public void refreshGroup(GroupInfo info) { |
725 |
public void refreshGroup(GroupInfo info) { |
| 751 |
|
726 |
|
| 752 |
synchronized (listenersKey) { |
727 |
Object[] listenersArray = listeners.getListeners(); |
| 753 |
for (int i = 0; i < listeners.length; i++) { |
728 |
for (int i = 0; i < listenersArray.length; i++) { |
| 754 |
listeners[i].refreshGroup(info); |
729 |
((IJobProgressManagerListener)listenersArray[i]).refreshGroup(info); |
| 755 |
} |
|
|
| 756 |
} |
730 |
} |
| 757 |
} |
731 |
} |
| 758 |
|
732 |
|
|
Lines 763-772
Link Here
|
| 763 |
public void refreshAll() { |
737 |
public void refreshAll() { |
| 764 |
|
738 |
|
| 765 |
pruneStaleJobs(); |
739 |
pruneStaleJobs(); |
| 766 |
synchronized (listenersKey) { |
740 |
Object[] listenersArray = listeners.getListeners(); |
| 767 |
for (int i = 0; i < listeners.length; i++) { |
741 |
for (int i = 0; i < listenersArray.length; i++) { |
| 768 |
listeners[i].refreshAll(); |
742 |
((IJobProgressManagerListener)listenersArray[i]).refreshAll(); |
| 769 |
} |
|
|
| 770 |
} |
743 |
} |
| 771 |
|
744 |
|
| 772 |
} |
745 |
} |
|
Lines 787-801
Link Here
|
| 787 |
} |
760 |
} |
| 788 |
} |
761 |
} |
| 789 |
|
762 |
|
| 790 |
synchronized (listenersKey) { |
763 |
Object[] listenersArray = listeners.getListeners(); |
| 791 |
for (int i = 0; i < listeners.length; i++) { |
764 |
for (int i = 0; i < listenersArray.length; i++) { |
| 792 |
IJobProgressManagerListener listener = listeners[i]; |
765 |
IJobProgressManagerListener listener = (IJobProgressManagerListener) listenersArray[i]; |
| 793 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
766 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
| 794 |
listener.removeJob(info); |
767 |
listener.removeJob(info); |
| 795 |
} |
|
|
| 796 |
} |
768 |
} |
| 797 |
} |
769 |
} |
| 798 |
|
|
|
| 799 |
} |
770 |
} |
| 800 |
|
771 |
|
| 801 |
/** |
772 |
/** |
|
Lines 806-815
Link Here
|
| 806 |
*/ |
777 |
*/ |
| 807 |
public void removeGroup(GroupInfo group) { |
778 |
public void removeGroup(GroupInfo group) { |
| 808 |
|
779 |
|
| 809 |
synchronized (listenersKey) { |
780 |
Object[] listenersArray = listeners.getListeners(); |
| 810 |
for (int i = 0; i < listeners.length; i++) { |
781 |
for (int i = 0; i < listenersArray.length; i++) { |
| 811 |
listeners[i].removeGroup(group); |
782 |
((IJobProgressManagerListener)listenersArray[i]).removeGroup(group); |
| 812 |
} |
|
|
| 813 |
} |
783 |
} |
| 814 |
} |
784 |
} |
| 815 |
|
785 |
|
|
Lines 825-836
Link Here
|
| 825 |
} |
795 |
} |
| 826 |
|
796 |
|
| 827 |
jobs.put(info.getJob(), info); |
797 |
jobs.put(info.getJob(), info); |
| 828 |
synchronized (listenersKey) { |
798 |
Object[] listenersArray = listeners.getListeners(); |
| 829 |
for (int i = 0; i < listeners.length; i++) { |
799 |
for (int i = 0; i < listenersArray.length; i++) { |
| 830 |
IJobProgressManagerListener listener = listeners[i]; |
800 |
IJobProgressManagerListener listener = (IJobProgressManagerListener) listenersArray[i]; |
| 831 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
801 |
if (!isCurrentDisplaying(info.getJob(), listener.showsDebug())) { |
| 832 |
listener.addJob(info); |
802 |
listener.addJob(info); |
| 833 |
} |
|
|
| 834 |
} |
803 |
} |
| 835 |
} |
804 |
} |
| 836 |
} |
805 |
} |
|
Lines 1066-1074
Link Here
|
| 1066 |
* Shutdown the receiver. |
1035 |
* Shutdown the receiver. |
| 1067 |
*/ |
1036 |
*/ |
| 1068 |
private void shutdown() { |
1037 |
private void shutdown() { |
| 1069 |
synchronized (listenersKey) { |
1038 |
listeners.clear(); |
| 1070 |
this.listeners = new IJobProgressManagerListener[0]; |
|
|
| 1071 |
} |
| 1072 |
Job.getJobManager().setProgressProvider(null); |
1039 |
Job.getJobManager().setProgressProvider(null); |
| 1073 |
Job.getJobManager().removeJobChangeListener(this.changeListener); |
1040 |
Job.getJobManager().removeJobChangeListener(this.changeListener); |
| 1074 |
} |
1041 |
} |