Index: ChangeLogAction.java =================================================================== --- ChangeLogAction.java (revision 23273) +++ ChangeLogAction.java (working copy) @@ -162,6 +162,8 @@ IWorkspaceRoot myWorkspaceRoot = getWorkspaceRoot(); IResource given_resource = myWorkspaceRoot.findMember(editorLoc); + IProject targetProject = given_resource.getProject(); + setProjectVisibility(myWorkspaceRoot,new IProject[] {targetProject}, true); ContainerSelectionDialog dialog = new ContainerSelectionDialog(ws .getActiveWorkbenchWindow().getShell(), given_resource @@ -172,6 +174,8 @@ dialog.open(); Object[] result = dialog.getResult(); + setProjectVisibility(myWorkspaceRoot, null, false); + if (result == null) return null; final IPath result_path = new Path(result[0] @@ -336,5 +340,38 @@ pref_Formatter = store .getString("IChangeLogConstants.DEFAULT_FORMATTER"); // $NON-NLS-1$ } + + + /** + * + * @param root The workspace where selection will occur + * @param targetProjects A list of projects to act upon. + * If null is specified, then setHidden(isHidden) will be performed + * on all projects. + * @param isHidden true hides a project, false unhides a project + */ + protected void setProjectVisibility(IWorkspaceRoot root, IProject[] targetProjects, boolean isHidden){ + if (targetProjects == null) { + for (IProject proj : root.getProjects(IContainer.INCLUDE_HIDDEN)) { + try { + proj.setHidden(isHidden); + } catch (CoreException e) { + continue; + } + } + }else{ + for (IProject targetProj : targetProjects) { + for (IProject proj : root.getProjects(IContainer.INCLUDE_HIDDEN)) { + if (! targetProj.getLocation().toOSString().equals(proj.getLocation().toOSString())) { + try { + proj.setHidden(isHidden); + } catch (CoreException e) { + continue; + } + } + } + } + } + } }