### Eclipse Workspace Patch 1.0 #P org.eclipse.pde.core Index: text/org/eclipse/pde/internal/core/text/bundle/ExportPackageObject.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.core/text/org/eclipse/pde/internal/core/text/bundle/ExportPackageObject.java,v retrieving revision 1.11 diff -u -r1.11 ExportPackageObject.java --- text/org/eclipse/pde/internal/core/text/bundle/ExportPackageObject.java 2 Jan 2008 15:56:20 -0000 1.11 +++ text/org/eclipse/pde/internal/core/text/bundle/ExportPackageObject.java 12 Feb 2008 13:16:42 -0000 @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2005, 2007 IBM Corporation and others. + * Copyright (c) 2005, 2008 IBM Corporation and others. * 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 @@ -8,17 +8,12 @@ * Contributors: * IBM Corporation - initial API and implementation * Les Jones - Bug 208967 + * Benjamin Cabe - bug 218618 *******************************************************************************/ package org.eclipse.pde.internal.core.text.bundle; import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.ListIterator; -import java.util.StringTokenizer; -import java.util.TreeMap; - +import java.util.*; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.osgi.util.ManifestElement; import org.eclipse.pde.core.IModelChangedEvent; @@ -89,25 +84,32 @@ } public void addFriend(PackageFriend friend) { + boolean oldIsInternal = isInternal(); fFriends.put(friend.getName(), friend); addDirective(ICoreConstants.FRIENDS_DIRECTIVE, friend.getName()); setDirective(ICoreConstants.INTERNAL_DIRECTIVE, null); fHeader.update(); fireStructureChanged(friend, IModelChangedEvent.INSERT); + firePropertyChanged(this, ICoreConstants.INTERNAL_DIRECTIVE, Boolean.toString(oldIsInternal), Boolean.FALSE.toString()); } public void removeFriend(PackageFriend friend) { + boolean hasInternalChanged = false; fFriends.remove(friend.getName()); setDirective(ICoreConstants.FRIENDS_DIRECTIVE, null); - if (fFriends.size() == 0) + if (fFriends.size() == 0) { setDirective(ICoreConstants.INTERNAL_DIRECTIVE, "true"); //$NON-NLS-1$ - else { + hasInternalChanged = true; + } else { Iterator iter = fFriends.keySet().iterator(); while (iter.hasNext()) addDirective(ICoreConstants.FRIENDS_DIRECTIVE, iter.next().toString()); } fHeader.update(); fireStructureChanged(friend, IModelChangedEvent.REMOVE); + if (hasInternalChanged) + firePropertyChanged(this, ICoreConstants.INTERNAL_DIRECTIVE, Boolean.FALSE.toString(), Boolean.TRUE.toString()); + } public boolean hasFriend(String name) { #P org.eclipse.pde.ui Index: src/org/eclipse/pde/internal/ui/PDELabelProvider.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/PDELabelProvider.java,v retrieving revision 1.90 diff -u -r1.90 PDELabelProvider.java --- src/org/eclipse/pde/internal/ui/PDELabelProvider.java 21 Jan 2008 17:38:12 -0000 1.90 +++ src/org/eclipse/pde/internal/ui/PDELabelProvider.java 12 Feb 2008 13:16:45 -0000 @@ -7,6 +7,7 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Benjamin Cabe - bug 218618 *******************************************************************************/ package org.eclipse.pde.internal.ui; @@ -887,10 +888,12 @@ public Image getObjectImage(ExportPackageObject obj) { int flags = 0; - if (obj.isInternal()) + if (obj.isInternal()) { flags = F_INTERNAL; - if (obj.getFriends().length > 0) - flags = F_FRIEND; + // if internal with at least one friend + if (obj.getFriends().length > 0) + flags = F_FRIEND; + } ImageDescriptor desc = JavaUI.getSharedImages().getImageDescriptor(ISharedImages.IMG_OBJS_PACKAGE); return get(desc, flags); }