/*******************************************************************************
* Copyright (c) 2009, 2010 Innovation Gate GmbH.
* 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:
* Innovation Gate GmbH - initial API and implementation
******************************************************************************/
package de.innovationgate.eclipse.editors.design.wizards;
import java.io.IOException;
import java.io.InputStream;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IWorkbench;
import de.innovationgate.eclipse.editors.Plugin;
import de.innovationgate.eclipse.editors.ResourceIDs;
import de.innovationgate.eclipse.utils.WorkbenchUtils;
import de.innovationgate.eclipse.utils.ui.SingleStructuredSelection;
import de.innovationgate.eclipse.utils.ui.ValidatedMultiPageWizard;
import de.innovationgate.eclipse.utils.wga.WGADesignStructureHelper;
public class CreateNewCMLayout extends ValidatedMultiPageWizard {
private DesignFolderSelectionPage _designFolderSelectionPage;
private CreateNewCMLayoutPage _layoutPage;
public CreateNewCMLayout() {
super();
setWindowTitle("New CM Layout");
}
@Override
public boolean performFinish() {
try {
IContainer designRoot = (IContainer) _designFolderSelectionPage.getSelectedResource();
String outerLayoutName = _layoutPage.getOuterLayoutName();
String innerLayoutName = _layoutPage.getInnerLayoutName();
WGADesignStructureHelper helper = new WGADesignStructureHelper(designRoot);
IFolder html = helper.getTmlRoot().getFolder("html");
if (!html.exists()) {
html.create(false, true, new NullProgressMonitor());
}
IFile outerLayoutFile = html.getFile(new Path(outerLayoutName + ".tml"));
InputStream outerLayoutTemplate = null;
try {
outerLayoutTemplate = Plugin.getDefault().getResourceAsStream("resources/templates/defaultOuterLayout.template");
outerLayoutFile.create(outerLayoutTemplate, true, new NullProgressMonitor());
} finally {
if (outerLayoutTemplate != null) {
try {
outerLayoutTemplate.close();
} catch (IOException e) {
}
}
}
IFolder inner = html.getFolder("inner");
if (!inner.exists()) {
inner.create(false, true, new NullProgressMonitor());
}
IFile innerLayoutFile = inner.getFile(innerLayoutName + ".tml");
InputStream innerLayoutTemplate = null;
try {
innerLayoutTemplate = Plugin.getDefault().getResourceAsStream("resources/templates/defaultInnerLayout.template");
innerLayoutFile.create(innerLayoutTemplate, true, new NullProgressMonitor());
} finally {
if (innerLayoutTemplate != null) {
try {
innerLayoutTemplate.close();
} catch (IOException e) {
}
}
}
try {
WorkbenchUtils.setNavigationViewSelection(new SingleStructuredSelection(innerLayoutFile));
WorkbenchUtils.setNavigationViewSelection(new SingleStructuredSelection(outerLayoutFile));
WorkbenchUtils.openEditor(Plugin.getDefault().getWorkbench(), outerLayoutFile, ResourceIDs.EDITOR_TML);
} catch (Exception e) {
}
return true;
} catch (Exception e) {
WorkbenchUtils.showErrorDialog(Plugin.getDefault(), getShell(), "Create new CM layout failed", "Unable to create new CM layout.", e);
return false;
}
}
public void init(IWorkbench workbench, IStructuredSelection selection) {
_designFolderSelectionPage = new DesignFolderSelectionPage("Create new CM layout", "Please select the WGA design to create the new content management layout.", selection);
addPage(_designFolderSelectionPage);
_layoutPage = new CreateNewCMLayoutPage();
addPage(_layoutPage);
}
}