/*******************************************************************************
* Copyright (c) 2013 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.windup.ui;
import javax.inject.Inject;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.advanced.MAdvancedFactory;
import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
import org.eclipse.e4.ui.model.application.ui.advanced.MPlaceholder;
import org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer;
import org.eclipse.e4.ui.model.application.ui.basic.MPartStack;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
/**
* Represents the Windup perspective.
*/
public class WindupPerspective {
public static final String ID = "org.jboss.tools.windup.ui.perspective";
private static final String TOP_LEFT = "org.jboss.tools.windup.ui.partstack.topLeft";
public static final String ISSUE_EXPLORER = "org.jboss.tools.windup.ui.explorer";
public static final String EXPLORER = "org.eclipse.ui.navigator.ProjectExplorer";
private static final String NAVIGATOR = "org.eclipse.ui.views.ResourceNavigator";
private static final String BOTTOM_LEFT = "org.jboss.tools.windup.ui.partstack.bottomLeft";
private static final String CONTENT_OUTLINE = "org.eclipse.ui.views.ContentOutline";
private static final String MYLYN_TASKS = "org.eclipse.mylyn.tasks.ui.views.tasks";
private static final String BOTTOM_RIGHT = "org.jboss.tools.windup.ui.partstack.bottomRight";
private static final String PROBLEMS = "org.eclipse.ui.views.ProblemView";
private static final String CONSOLE = "org.eclipse.ui.console.ConsoleView";
private static final String PROPERTIES = "org.eclipse.ui.views.PropertySheet";
private static final String EDITOR_STACK = "org.jboss.tools.windup.ui.partsashcontainer.editorArea";
private static final String EDITOR = "org.eclipse.ui.editorss";
@Inject private MApplication app;
@Inject private EModelService modelService;
@Execute
public void setup() {
MPerspective perspective = (MPerspective)modelService.findSnippet(app, ID);
initTopLeft(perspective);
initBottomLeft(perspective);
initBottomRight(perspective);
createEditorArea(perspective);
}
private void initTopLeft(MPerspective perspective) {
MPartStack stack = (MPartStack)modelService.find(TOP_LEFT, perspective);
MPlaceholder placeholder = createPlaceholder(stack, ISSUE_EXPLORER);
stack.setSelectedElement(placeholder);
createPlaceholder(stack, EXPLORER);
createPlaceholder(stack, NAVIGATOR);
}
private void initBottomLeft(MPerspective perspective) {
MPartStack stack = (MPartStack)modelService.find(BOTTOM_LEFT, perspective);
MPlaceholder placeholder = createPlaceholder(stack, CONTENT_OUTLINE);
stack.setSelectedElement(placeholder);
createPlaceholder(stack, MYLYN_TASKS);
}
private void initBottomRight(MPerspective perspective) {
MPartStack stack = (MPartStack)modelService.find(BOTTOM_RIGHT, perspective);
MPlaceholder placeholder = createPlaceholder(stack, PROBLEMS);
stack.setSelectedElement(placeholder);
createPlaceholder(stack, PROPERTIES);
createPlaceholder(stack, CONSOLE);
}
private void createEditorArea(MPerspective perspective) {
MPartSashContainer stack = (MPartSashContainer)modelService.find(EDITOR_STACK, perspective);
MPlaceholder placeholder = MAdvancedFactory.INSTANCE.createPlaceholder();
placeholder.setCloseable(false);
placeholder.setVisible(true);
placeholder.setToBeRendered(true);
placeholder.setElementId(EDITOR);
placeholder.setContainerData("8400");
stack.getChildren().add(placeholder);
}
private MPlaceholder createPlaceholder(MPartStack stack, String elementId) {
MPlaceholder placeholder = MAdvancedFactory.INSTANCE.createPlaceholder();
placeholder.setCloseable(false);
placeholder.setVisible(true);
placeholder.setToBeRendered(true);
placeholder.setElementId(elementId);
stack.getChildren().add(placeholder);
return placeholder;
}
}