MERGED: Fix for packages displayed in browsing perspective
diff --git a/tcl/plugins/org.eclipse.dltk.tcl.ui/plugin.xml b/tcl/plugins/org.eclipse.dltk.tcl.ui/plugin.xml index e9ef47e..85e5395 100644 --- a/tcl/plugins/org.eclipse.dltk.tcl.ui/plugin.xml +++ b/tcl/plugins/org.eclipse.dltk.tcl.ui/plugin.xml
@@ -477,23 +477,13 @@ point="org.eclipse.dltk.ui.scriptCompletionProposalComputer" id="TclScriptNoTypeCompletionProposalComputer"> <scriptCompletionProposalComputer - categoryId="org.eclipse.dltk.ui.scriptNoTypeProposalCategory" - class="org.eclipse.dltk.tcl.internal.ui.text.completion.TclNoTypeCompletionProposalComputer" + categoryId="org.eclipse.dltk.ui.scriptTypeProposalCategory" + class="org.eclipse.dltk.tcl.internal.ui.text.completion.TclTypeCompletionProposalComputer" toolkitId="org.eclipse.dltk.tcl.core.nature"> <partition type="__dftl_partition_content_type"/> <partition type="__tcl_string"/> </scriptCompletionProposalComputer> </extension> - <extension - point="org.eclipse.dltk.ui.scriptCompletionProposalComputer" - id="TclScriptTypeCompletionProposalComputer"> - <scriptCompletionProposalComputer - class="org.eclipse.dltk.tcl.internal.ui.text.completion.TclTypeCompletionProposalComputer" - categoryId="org.eclipse.dltk.ui.scriptTypeProposalCategory" - toolkitId="org.eclipse.dltk.tcl.core.nature"> - <partition type="__dftl_partition_content_type"/> - </scriptCompletionProposalComputer> - </extension> <extension point="org.eclipse.dltk.ui.scriptDocumentationProviders"> <provider @@ -610,7 +600,7 @@ point="org.eclipse.ui.views"> <view category="org.eclipse.dltk.tcl.ui" - class="org.eclipse.dltk.ui.browsing.ProjectsView:org.eclipse.dltk.tcl.core.nature" + class="org.eclipse.dltk.tcl.internal.ui.browsing.TclProjectsView:org.eclipse.dltk.tcl.core.nature" icon="icons/eview16/tcl_persp.gif" id="org.eclipse.dltk.tcl.ui.Projects" name="%TclProjectsView.name"> @@ -673,13 +663,14 @@ language="org.eclipse.dltk.tcl.core.nature"> </modelCompareProvider> </extension> -<!--extension +<extension point="org.eclipse.dltk.ui.editorTextHovers"> <hover activate="false" class="org.eclipse.dltk.tcl.internal.ui.PackagesSourcesHover" id="org.eclipse.dltk.tcl.ui.source_package_hover" + nature="org.eclipse.dltk.tcl.core.nature" label="Tcl Source/Package information hover"> </hover> -</extension--> +</extension> </plugin>
diff --git a/tcl/plugins/org.eclipse.dltk.tcl.ui/src/org/eclipse/dltk/tcl/internal/ui/browsing/TclDecoratingModelLabelProvider.java b/tcl/plugins/org.eclipse.dltk.tcl.ui/src/org/eclipse/dltk/tcl/internal/ui/browsing/TclDecoratingModelLabelProvider.java new file mode 100644 index 0000000..9be6547 --- /dev/null +++ b/tcl/plugins/org.eclipse.dltk.tcl.ui/src/org/eclipse/dltk/tcl/internal/ui/browsing/TclDecoratingModelLabelProvider.java
@@ -0,0 +1,46 @@ +/******************************************************************************* + * Copyright (c) 2009 xored software, Inc. + * + * 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * xored software, Inc. - initial API and Implementation (Alex Panchenko) + *******************************************************************************/ +package org.eclipse.dltk.tcl.internal.ui.browsing; + +import org.eclipse.dltk.core.IModelElement; +import org.eclipse.dltk.core.ModelException; +import org.eclipse.dltk.tcl.internal.core.packages.TclPackageFragment; +import org.eclipse.dltk.ui.viewsupport.DecoratingModelLabelProvider; +import org.eclipse.dltk.ui.viewsupport.ScriptUILabelProvider; + +public class TclDecoratingModelLabelProvider extends + DecoratingModelLabelProvider { + + /** + * @param labelProvider + */ + public TclDecoratingModelLabelProvider(ScriptUILabelProvider labelProvider) { + super(labelProvider); + } + + @Override + public String getText(Object element) { + if (element instanceof TclPackageFragment) { + final TclPackageFragment fragment = (TclPackageFragment) element; + try { + final IModelElement[] children = fragment.getChildren(); + if (children.length == 1) { + return super.getText(children[0]); + } + } catch (ModelException e) { + // ignore + } + return fragment.getPackageName(); + } + return super.getText(element); + } +}
diff --git a/tcl/plugins/org.eclipse.dltk.tcl.ui/src/org/eclipse/dltk/tcl/internal/ui/browsing/TclProjectAndSourceFolderContentProvider.java b/tcl/plugins/org.eclipse.dltk.tcl.ui/src/org/eclipse/dltk/tcl/internal/ui/browsing/TclProjectAndSourceFolderContentProvider.java new file mode 100644 index 0000000..8b513db --- /dev/null +++ b/tcl/plugins/org.eclipse.dltk.tcl.ui/src/org/eclipse/dltk/tcl/internal/ui/browsing/TclProjectAndSourceFolderContentProvider.java
@@ -0,0 +1,55 @@ +/******************************************************************************* + * Copyright (c) 2009 xored software, Inc. + * + * 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * xored software, Inc. - initial API and Implementation (Alex Panchenko) + *******************************************************************************/ +package org.eclipse.dltk.tcl.internal.ui.browsing; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.dltk.core.IDLTKLanguageToolkit; +import org.eclipse.dltk.core.IProjectFragment; +import org.eclipse.dltk.core.IScriptProject; +import org.eclipse.dltk.core.ModelException; +import org.eclipse.dltk.tcl.internal.core.sources.TclSourcesFragment; +import org.eclipse.dltk.ui.browsing.ProjectAndSourceFolderContentProvider; +import org.eclipse.dltk.ui.browsing.ScriptBrowsingPart; + +public class TclProjectAndSourceFolderContentProvider extends + ProjectAndSourceFolderContentProvider { + + public TclProjectAndSourceFolderContentProvider( + ScriptBrowsingPart browsingPart, + IDLTKLanguageToolkit languageToolkit) { + super(browsingPart, languageToolkit); + } + + @Override + protected Object[] getProjectFragments(IScriptProject project) + throws ModelException { + if (!project.getProject().isOpen()) + return NO_CHILDREN; + IProjectFragment[] roots = project.getProjectFragments(); + final List list = new ArrayList(roots.length); + // filter out package fragments that correspond to projects and + // replace them with the package fragments directly + for (int i = 0; i < roots.length; i++) { + IProjectFragment root = roots[i]; + if (!isProjectProjectFragment(root)) { + if (!(root instanceof TclSourcesFragment)) { + // FIXME Exclude "Sources" element for now + list.add(root); + } + } + } + return list.toArray(); + } + +}
diff --git a/tcl/plugins/org.eclipse.dltk.tcl.ui/src/org/eclipse/dltk/tcl/internal/ui/browsing/TclProjectsView.java b/tcl/plugins/org.eclipse.dltk.tcl.ui/src/org/eclipse/dltk/tcl/internal/ui/browsing/TclProjectsView.java new file mode 100644 index 0000000..7bf05f9 --- /dev/null +++ b/tcl/plugins/org.eclipse.dltk.tcl.ui/src/org/eclipse/dltk/tcl/internal/ui/browsing/TclProjectsView.java
@@ -0,0 +1,32 @@ +/******************************************************************************* + * Copyright (c) 2009 xored software, Inc. + * + * 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 + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * xored software, Inc. - initial API and Implementation (Alex Panchenko) + *******************************************************************************/ +package org.eclipse.dltk.tcl.internal.ui.browsing; + +import org.eclipse.dltk.ui.browsing.ProjectsView; +import org.eclipse.dltk.ui.viewsupport.DecoratingModelLabelProvider; +import org.eclipse.dltk.ui.viewsupport.ScriptUILabelProvider; +import org.eclipse.jface.viewers.IContentProvider; + +public class TclProjectsView extends ProjectsView { + + @Override + protected DecoratingModelLabelProvider createDecoratingLabelProvider( + ScriptUILabelProvider provider) { + return new TclDecoratingModelLabelProvider(provider); + } + + @Override + protected IContentProvider createContentProvider() { + return new TclProjectAndSourceFolderContentProvider(this, getToolkit()); + } + +}