Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse')
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/InfoReader.java4
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveBuilder.java130
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveReader.java12
-rw-r--r--bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ImportExportPespectiveHandler.java7
4 files changed, 120 insertions, 33 deletions
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/InfoReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/InfoReader.java
index 1ccf82cae50..65bcbdc0fc0 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/InfoReader.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/InfoReader.java
@@ -136,6 +136,10 @@ public class InfoReader extends MementoReader {
return getString(IWorkbenchConstants.TAG_CONTENT);
}
+ String getLabel() {
+ return getString(IWorkbenchConstants.TAG_LABEL);
+ }
+
}
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveBuilder.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveBuilder.java
index f9df78d3f60..a1a1d03daf3 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveBuilder.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveBuilder.java
@@ -38,6 +38,7 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.internal.IWorkbenchConstants;
import org.eclipse.ui.internal.PerspectiveTagger;
import org.eclipse.ui.internal.e4.compatibility.ModeledPageLayout;
import org.eclipse.ui.internal.e4.compatibility.ModeledPageLayoutUtils;
@@ -55,6 +56,8 @@ public class PerspectiveBuilder {
static final String BASE_PERSPECTIVE_ID = "basePerspectiveId"; //$NON-NLS-1$
+ private static final String DEFAULT_FASTVIEW_STACK = "defaultFastViewStack"; //$NON-NLS-1$
+
private static final String ID_EDITOR_AREA = IPageLayout.ID_EDITOR_AREA;
@Inject
@@ -69,6 +72,8 @@ public class PerspectiveBuilder {
private List<String> renderedViews;
+ private List<String> defaultFastViews;
+
private Map<String, MPlaceholder> viewPlaceholders = new HashMap<>();
private Map<String, ViewLayoutReader> viewLayouts;
@@ -118,6 +123,7 @@ public class PerspectiveBuilder {
}
}
+ addDefaultFastViewStack();
setZoomState();
addDetachedWindows();
hideEmptyStacks();
@@ -165,7 +171,7 @@ public class PerspectiveBuilder {
private void addTrimBars() {
Map<String, Integer> fastViewBars = perspReader.getFastViewBars();
- if (fastViewBars.size() == 0) {
+ if (fastViewBars.size() == 0 && defaultFastViews.size() == 0) {
return;
}
@@ -175,37 +181,44 @@ public class PerspectiveBuilder {
int leftCounter = 0;
StringBuilder sb = new StringBuilder();
- for (InfoReader folder : perspReader.getInfos()) {
- String folderId = folder.getId();
- if (!fastViewBars.containsKey(folderId)) {
- continue;
- }
+ if (defaultFastViews.size() > 0) {
+ sb.append(DEFAULT_FASTVIEW_STACK).append(' ');
+ sb.append(SideValue.BOTTOM_VALUE).append(' ').append(bottomCounter++);
+ sb.append('#');
+ }
- sb.append(folderId).append(' ');
+ if (fastViewBars.size() > 0) {
+ for (InfoReader folder : perspReader.getInfos()) {
+ String folderId = folder.getId();
+ if (!fastViewBars.containsKey(folderId)) {
+ continue;
+ }
- Integer side = fastViewBars.get(folderId);
- if (side == null) {
- side = SWT.LEFT;
- }
+ sb.append(folderId).append(' ');
- switch (side) {
- case SWT.TOP:
- sb.append(SideValue.TOP_VALUE).append(' ').append(topCounter++);
- break;
- case SWT.BOTTOM:
- sb.append(SideValue.BOTTOM_VALUE).append(' ').append(bottomCounter++);
- break;
- case SWT.RIGHT:
- sb.append(SideValue.RIGHT_VALUE).append(' ').append(rightCounter++);
- break;
- default:
- sb.append(SideValue.LEFT_VALUE).append(' ').append(leftCounter++);
- break;
- }
+ Integer side = fastViewBars.get(folderId);
+ if (side == null) {
+ side = SWT.LEFT;
+ }
- sb.append('#');
- }
+ switch (side) {
+ case SWT.TOP:
+ sb.append(SideValue.TOP_VALUE).append(' ').append(topCounter++);
+ break;
+ case SWT.BOTTOM:
+ sb.append(SideValue.BOTTOM_VALUE).append(' ').append(bottomCounter++);
+ break;
+ case SWT.RIGHT:
+ sb.append(SideValue.RIGHT_VALUE).append(' ').append(rightCounter++);
+ break;
+ default:
+ sb.append(SideValue.LEFT_VALUE).append(' ').append(leftCounter++);
+ break;
+ }
+ sb.append('#');
+ }
+ }
perspective.getPersistedState().put("trims", sb.toString()); //$NON-NLS-1$
}
@@ -377,6 +390,21 @@ public class PerspectiveBuilder {
return stack;
}
+ private MPartStack addDefaultFastViewStack() {
+ MPartStack stack = null;
+ List<String> views = perspReader.getDefaultFastViewBarViewIds();
+ if (views.size() > 0) {
+ stack = layoutUtils.createStack(DEFAULT_FASTVIEW_STACK, true);
+ perspective.getChildren().add(stack);
+ setPartState(stack, org.eclipse.ui.internal.e4.migration.InfoReader.PartState.MINIMIZED);
+
+ for (String view : views) {
+ addPlaceholderToDefaultFastViewStack(stack, view, null);
+ }
+ }
+ return stack;
+ }
+
private void setPartState(MUIElement element, PartState state) {
List<String> tags = element.getTags();
switch (state) {
@@ -412,7 +440,7 @@ public class PerspectiveBuilder {
private void populatePartStack(MPartStack stack, InfoReader info) {
for (PageReader page : info.getPages()) {
- addPlaceholderToStack(stack, page.getId());
+ addPlaceholderToStack(stack, page.getId(), page.getLabel());
}
MStackElement selectedElement = (MStackElement) modelService.find(info.getActivePageId(), stack);
if (selectedElement != null) {
@@ -454,14 +482,16 @@ public class PerspectiveBuilder {
private void populatePartStack(MPartStack stack, DetachedWindowReader info) {
for (PageReader page : info.getPages()) {
- addPlaceholderToStack(stack, page.getId());
+ addPlaceholderToStack(stack, page.getId(), page.getLabel());
}
stack.setSelectedElement((MStackElement) modelService.find(info.getActivePageId(), stack));
}
- private void addPlaceholderToStack(MPartStack stack, String partId) {
- MPlaceholder placeholder = modelService.createModelElement(MPlaceholder.class);
- placeholder.setElementId(partId);
+ private void addPlaceholderToStack(MPartStack stack, String partId, String label) {
+ if (partId == null || isDefaultFastView(partId)) {
+ return;
+ }
+ MPlaceholder placeholder = createPlaceHolder(partId, label);
if (!isToBeRendered(placeholder)) {
placeholder.setToBeRendered(false);
}
@@ -470,6 +500,18 @@ public class PerspectiveBuilder {
viewPlaceholders.put(partId, placeholder);
}
+ private void addPlaceholderToDefaultFastViewStack(MPartStack stack, String partId, String label) {
+ MPlaceholder placeholder = createPlaceHolder(partId, label);
+ if (!isDefaultFastView(placeholder)) {
+ placeholder.setToBeRendered(false);
+ }
+ addLayoutTagsToPlaceholder(placeholder, partId);
+ stack.getChildren().add(placeholder);
+ if (viewPlaceholders.get(partId) != null) {
+ viewPlaceholders.put(partId, placeholder);
+ }
+ }
+
private void addLayoutTagsToPlaceholder(MPlaceholder placeholder, String partId) {
ViewLayoutReader viewLayout = getViewLayout(partId);
if (viewLayout == null) {
@@ -491,6 +533,20 @@ public class PerspectiveBuilder {
return renderedViews.contains(placeholder.getElementId());
}
+ private boolean isDefaultFastView(MPlaceholder placeholder) {
+ if (defaultFastViews == null) {
+ defaultFastViews = perspReader.getDefaultFastViewBarViewIds();
+ }
+ return defaultFastViews.contains(placeholder.getElementId());
+ }
+
+ private boolean isDefaultFastView(String placeholderId) {
+ if (defaultFastViews == null) {
+ defaultFastViews = perspReader.getDefaultFastViewBarViewIds();
+ }
+ return defaultFastViews.contains(placeholderId);
+ }
+
private void addPerspectiveShortcutTags() {
for (String shortcutId : perspReader.getPerspectiveShortcutIds()) {
tags.add(ModeledPageLayout.PERSP_SHORTCUT_TAG + shortcutId);
@@ -614,4 +670,14 @@ public class PerspectiveBuilder {
return editorAreaPlaceholder;
}
+ MPlaceholder createPlaceHolder(String str, String label) {
+ MPlaceholder placeholder = null;
+ placeholder = modelService.createModelElement(MPlaceholder.class);
+ placeholder.setElementId(str);
+ if (modelService.getPartDescriptor(str) == null) {
+ placeholder.getTransientData().put(IWorkbenchConstants.TAG_LABEL, label);
+ }
+ return placeholder;
+ }
+
}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveReader.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveReader.java
index 137cc8cfd2b..835427bd3b1 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveReader.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/e4/migration/PerspectiveReader.java
@@ -142,6 +142,18 @@ public class PerspectiveReader extends MementoReader {
return fastViewIds;
}
+ List<String> getDefaultFastViewBarViewIds() {
+ List<String> fastViewIds = new ArrayList<>();
+ IMemento fastViews = getChild(IWorkbenchConstants.TAG_FAST_VIEWS);
+ if (fastViews != null) {
+ for (IMemento view : fastViews.getChildren(IWorkbenchConstants.TAG_VIEW)) {
+ fastViewIds.add(view.getString(IWorkbenchConstants.TAG_ID));
+ }
+ }
+
+ return fastViewIds;
+ }
+
private IMemento[] getFastViewBarMems() {
IMemento[] emptyArr = new IMemento[0];
IMemento fastViewBars = getChild(IWorkbenchConstants.TAG_FAST_VIEW_BARS);
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ImportExportPespectiveHandler.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ImportExportPespectiveHandler.java
index 8d24b46888b..9958513f400 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ImportExportPespectiveHandler.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/registry/ImportExportPespectiveHandler.java
@@ -352,7 +352,12 @@ public class ImportExportPespectiveHandler {
private boolean isImpExpEnabled() {
if (impExpEnabled == null) {
- impExpEnabled = Boolean.parseBoolean(System.getProperty("e4.impExpPerspectiveEnabled")); //$NON-NLS-1$
+ String propertyStr = System.getProperty("e4.impExpPerspectiveEnabled"); //$NON-NLS-1$
+ if (propertyStr == null) {
+ impExpEnabled = true;
+ } else {
+ impExpEnabled = Boolean.parseBoolean(propertyStr);
+ }
}
return impExpEnabled;
}

Back to the top