View | Details | Raw Unified | Return to bug 181878 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/pde/internal/ui/editor/site/CategorySection.java (-16 / +53 lines)
Lines 12-17 Link Here
12
12
13
import java.util.ArrayList;
13
import java.util.ArrayList;
14
import java.util.HashSet;
14
import java.util.HashSet;
15
import java.util.Iterator;
16
import java.util.Set;
15
17
16
import org.eclipse.core.runtime.CoreException;
18
import org.eclipse.core.runtime.CoreException;
17
import org.eclipse.jface.action.Action;
19
import org.eclipse.jface.action.Action;
Lines 171-177 Link Here
171
		fModel.addModelChangedListener(this);
173
		fModel.addModelChangedListener(this);
172
174
173
		Composite container = createClientContainer(section, 2, toolkit);
175
		Composite container = createClientContainer(section, 2, toolkit);
174
		createViewerPartControl(container, SWT.SINGLE, 2, toolkit);
176
		createViewerPartControl(container, SWT.MULTI, 2, toolkit);
175
		fCategoryTreePart = getTreePart();
177
		fCategoryTreePart = getTreePart();
176
		fCategoryViewer = fCategoryTreePart.getTreeViewer();
178
		fCategoryViewer = fCategoryTreePart.getTreeViewer();
177
		fCategoryViewer.setContentProvider(new CategoryContentProvider());
179
		fCategoryViewer.setContentProvider(new CategoryContentProvider());
Lines 418-430 Link Here
418
	private boolean handleRemove() {
420
	private boolean handleRemove() {
419
		IStructuredSelection ssel = (IStructuredSelection) fCategoryViewer
421
		IStructuredSelection ssel = (IStructuredSelection) fCategoryViewer
420
				.getSelection();
422
				.getSelection();
421
		Object object = ssel.getFirstElement();
423
		Iterator iterator = ssel.iterator();
422
		if (object == null)
424
		boolean success = true;
423
			return true;
425
		Set removedCategories = new HashSet();
424
		if (object instanceof ISiteCategoryDefinition) {
426
		while(iterator.hasNext()) {
425
			return handleRemoveCategoryDefinition((ISiteCategoryDefinition) object);
427
			Object object = iterator.next();
428
			if (object == null) continue;
429
			if (object instanceof ISiteCategoryDefinition) {
430
				if(! handleRemoveCategoryDefinition((ISiteCategoryDefinition) object)) {
431
					success = false; 
432
				} 
433
			} else {
434
				//check if some of features was not removed during category removal
435
				SiteFeatureAdapter fa = (SiteFeatureAdapter) object;
436
				if(removedCategories.contains(fa.category)) continue;
437
				
438
				if(!handleRemoveSiteFeatureAdapter(fa)) {
439
					success = false;
440
				}
441
			}
426
		}
442
		}
427
		return handleRemoveSiteFeatureAdapter((SiteFeatureAdapter) object);
443
		return success;
428
	}
444
	}
429
445
430
	private boolean handleRemoveCategoryDefinition(
446
	private boolean handleRemoveCategoryDefinition(
Lines 553-558 Link Here
553
		if (actionId.equals(ActionFactory.DELETE.getId())) {
569
		if (actionId.equals(ActionFactory.DELETE.getId())) {
554
			return handleRemove();
570
			return handleRemove();
555
		}
571
		}
572
		if (actionId.equals(ActionFactory.SELECT_ALL.getId())) {
573
			fCategoryViewer.getTree().selectAll();
574
			refresh();
575
		}
556
		return false;
576
		return false;
557
	}
577
	}
558
578
Lines 568-578 Link Here
568
		}
588
		}
569
		IStructuredSelection sel = (IStructuredSelection) fCategoryViewer
589
		IStructuredSelection sel = (IStructuredSelection) fCategoryViewer
570
				.getSelection();
590
				.getSelection();
571
		fCategoryTreePart.setButtonEnabled(BUTTON_BUILD_FEATURE,
591
		
572
				!sel.isEmpty()
592
		if(!sel.isEmpty()) {
573
						&& sel.getFirstElement() instanceof SiteFeatureAdapter
593
			boolean success = true;
574
						&& findFeature(((SiteFeatureAdapter) sel
594
			Iterator i = sel.iterator();
575
								.getFirstElement()).feature) != null);
595
			while (i.hasNext()) {
596
				Object next = i.next();
597
				if (!(next instanceof SiteFeatureAdapter && 
598
						findFeature(((SiteFeatureAdapter) next).feature) != null)) {
599
					success = false;
600
					break;
601
				}
602
			}
603
			fCategoryTreePart.setButtonEnabled(BUTTON_BUILD_FEATURE, success);
604
		} else fCategoryTreePart.setButtonEnabled(BUTTON_BUILD_FEATURE, false);
576
		int featureCount = fModel.getSite().getFeatures().length;
605
		int featureCount = fModel.getSite().getFeatures().length;
577
		fCategoryTreePart.setButtonEnabled(BUTTON_BUILD_ALL, featureCount > 0);
606
		fCategoryTreePart.setButtonEnabled(BUTTON_BUILD_ALL, featureCount > 0);
578
		fCategoryTreePart.setButtonEnabled(BUTTON_IMPORT_ENVIRONMENT, featureCount > 0);
607
		fCategoryTreePart.setButtonEnabled(BUTTON_IMPORT_ENVIRONMENT, featureCount > 0);
Lines 642-651 Link Here
642
	private void handleBuild() {
671
	private void handleBuild() {
643
		IStructuredSelection sel = (IStructuredSelection) fCategoryViewer
672
		IStructuredSelection sel = (IStructuredSelection) fCategoryViewer
644
				.getSelection();
673
				.getSelection();
645
		if (!sel.isEmpty()
674
		if (!sel.isEmpty()) {
646
				&& sel.getFirstElement() instanceof SiteFeatureAdapter) {
675
			ArrayList features = new ArrayList(sel.size());
647
			ISiteFeature feature = ((SiteFeatureAdapter) sel.getFirstElement()).feature;
676
			Iterator iterator = sel.iterator();
648
			((SiteEditor)getPage().getPDEEditor()).handleBuild(new ISiteFeature[] { feature });
677
			while(iterator.hasNext()) {
678
				Object next = iterator.next();
679
				if(next instanceof SiteFeatureAdapter) {
680
					if((((SiteFeatureAdapter) next).feature) != null) {
681
						features.add(((SiteFeatureAdapter) next).feature);
682
					}
683
				}
684
			}
685
			((SiteEditor)getPage().getPDEEditor()).handleBuild((ISiteFeature[]) features.toArray(new ISiteFeature[0]));
649
		}
686
		}
650
	}
687
	}
651
688

Return to bug 181878