diff options
Diffstat (limited to 'bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse')
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; } |