blob: 7896675e4025016299b7e66cc1565645a7d09795 [file] [log] [blame]
// RAP [rh] SettingsTransfer not supported
///*******************************************************************************
// * Copyright (c) 2006, 2007 IBM Corporation and others.
// * 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:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//
//package org.eclipse.ui.internal;
//
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.OutputStreamWriter;
//
//import org.eclipse.core.runtime.IAdaptable;
//import org.eclipse.core.runtime.IPath;
//import org.eclipse.core.runtime.IStatus;
//import org.eclipse.core.runtime.MultiStatus;
//import org.eclipse.core.runtime.Status;
//import org.eclipse.jface.dialogs.ErrorDialog;
//import org.eclipse.osgi.util.NLS;
//import org.eclipse.ui.IMemento;
//import org.eclipse.ui.IPersistableElement;
//import org.eclipse.ui.IPerspectiveDescriptor;
//import org.eclipse.ui.IViewPart;
//import org.eclipse.ui.IViewReference;
////import org.eclipse.ui.IWorkbench;
//import org.eclipse.ui.IWorkbenchPage;
//import org.eclipse.ui.IWorkbenchPreferenceConstants;
//import org.eclipse.ui.IWorkbenchWindow;
//import org.eclipse.ui.PlatformUI;
//import org.eclipse.ui.XMLMemento;
////import org.eclipse.ui.internal.intro.IIntroConstants;
//import org.eclipse.ui.internal.preferences.WorkbenchSettingsTransfer;
//import org.eclipse.ui.internal.presentations.PresentationFactoryUtil;
//import org.eclipse.ui.internal.util.PrefUtil;
//import org.eclipse.ui.internal.util.Util;
//import org.eclipse.ui.presentations.AbstractPresentationFactory;
//import org.eclipse.ui.presentations.IStackPresentationSite;
//
///**
// * The WorkbenchSettings handles the recording and restoring of workbench
// * settings.
// *
// */
//public class WorkbenchLayoutSettingsTransfer extends WorkbenchSettingsTransfer {
//
// // private static final String WORKBENCH_LAYOUT_PATH =
// // ".metadata/.plugins/org.eclipse.ui.workbench/workbench.xml";
// // //$NON-NLS-1$
//
// /**
// * Create a new instance of the receiver.
// */
// public WorkbenchLayoutSettingsTransfer() {
// super();
// }
//
// /**
// * Record the sharable workbench state in a document.
// *
// * @return {@link XMLMemento}
// */
// public XMLMemento recordSharableWorkbenchState() {
// XMLMemento memento = XMLMemento
// .createWriteRoot(IWorkbenchConstants.TAG_WORKBENCH);
// IStatus status = saveSettings(memento);
// if (status.getSeverity() != IStatus.OK) {
// // don't use newWindow as parent because it has not yet been opened
// // (bug 76724)
// ErrorDialog.openError(null,
// WorkbenchMessages.get().Workbench_problemsSaving,
// WorkbenchMessages.get().Workbench_problemsSavingMsg, status);
// }
// return memento;
// }
//
// /**
// * Save the settings to the memento.
// *
// * @param memento
// * @return IStatus
// */
// private IStatus saveSettings(XMLMemento memento) {
// MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID, IStatus.OK,
// WorkbenchMessages.get().Workbench_problemsSaving, null);
//
// // Save the version number.
// memento.putString(IWorkbenchConstants.TAG_VERSION,
// Workbench.VERSION_STRING[1]);
//
// // Save the workbench windows.
// IWorkbenchWindow[] windows = PlatformUI.getWorkbench()
// .getWorkbenchWindows();
// for (int nX = 0; nX < windows.length; nX++) {
// WorkbenchWindow window = (WorkbenchWindow) windows[nX];
// IMemento childMem = memento
// .createChild(IWorkbenchConstants.TAG_WINDOW);
// result.merge(saveState(window, childMem));
// }
// return result;
// }
//
// /**
// * Save the workbench window state.
// *
// * @param window
// * @param memento
// * @return IStatus
// */
// private IStatus saveState(WorkbenchWindow window, IMemento memento) {
//
// MultiStatus result = new MultiStatus(PlatformUI.PLUGIN_ID, IStatus.OK,
// WorkbenchMessages.get().WorkbenchWindow_problemsSavingWindow, null);
//
//// RAP [rh] Intro mechanism not supported
//// IWorkbenchPage activePage = window.getActivePage();
//// if (activePage != null
//// && activePage.findView(IIntroConstants.INTRO_VIEW_ID) != null) {
//// IMemento introMem = memento
//// .createChild(IWorkbenchConstants.TAG_INTRO);
//// boolean isStandby = getWorkbench()
//// .getIntroManager()
//// .isIntroStandby(getWorkbench().getIntroManager().getIntro());
//// introMem.putString(IWorkbenchConstants.TAG_STANDBY, String
//// .valueOf(isStandby));
//// }
//
// // Save each page.
// IWorkbenchPage[] pages = window.getPages();
// for (int i = 0; i < pages.length; i++) {
// IWorkbenchPage page = pages[i];
//
// // Save perspective.
// IMemento pageMem = memento
// .createChild(IWorkbenchConstants.TAG_PAGE);
// pageMem.putString(IWorkbenchConstants.TAG_LABEL, page.getLabel());
// result.add(saveState((WorkbenchPage) page, pageMem));
//
// if (page == window.getActivePage()) {
// pageMem.putString(IWorkbenchConstants.TAG_FOCUS, "true"); //$NON-NLS-1$
// }
//
// // Get the input.
// IAdaptable input = page.getInput();
// if (input != null) {
// IPersistableElement persistable = (IPersistableElement) Util
// .getAdapter(input, IPersistableElement.class);
// if (persistable == null) {
// WorkbenchPlugin
// .log("Unable to save page input: " //$NON-NLS-1$
// + input
// + ", because it does not adapt to IPersistableElement"); //$NON-NLS-1$
//
// } else {
// // Save input.
// IMemento inputMem = pageMem
// .createChild(IWorkbenchConstants.TAG_INPUT);
// inputMem.putString(IWorkbenchConstants.TAG_FACTORY_ID,
// persistable.getFactoryId());
// persistable.saveState(inputMem);
// }
// }
// }
//
// return result;
// }
//
// /**
// * Save the state of the workbench page.
// *
// * @param page
// * @param pageMem
// * @return IStatus
// */
// private IStatus saveState(WorkbenchPage page, IMemento memento) {
//
// MultiStatus result = new MultiStatus(
// PlatformUI.PLUGIN_ID,
// IStatus.OK,
// NLS
// .bind(
// WorkbenchMessages.get().WorkbenchPage_unableToSavePerspective,
// page.getLabel()), null);
//
// saveEditorState( memento);
//
// IMemento viewMem = memento.createChild(IWorkbenchConstants.TAG_VIEWS);
//
// IViewReference[] refs = page.getViewReferences();
//
// for (int i = 0; i < refs.length; i++) {
// IViewReference viewReference = refs[i];
// String tagId = ViewFactory.getKey(viewReference);
// if (tagId != null) {
// IMemento childMem = viewMem
// .createChild(IWorkbenchConstants.TAG_VIEW);
// childMem.putString(IWorkbenchConstants.TAG_ID, tagId);
// String name = viewReference.getPartName();
// if (name != null) {
// childMem.putString(IWorkbenchConstants.TAG_PART_NAME, name);
// }
// }
// }
//
// // Create persp block.
// IMemento perspectiveMemento = memento
// .createChild(IWorkbenchConstants.TAG_PERSPECTIVES);
// if (page.getPerspective() != null) {
// perspectiveMemento.putString(
// IWorkbenchConstants.TAG_ACTIVE_PERSPECTIVE, page
// .getPerspective().getId());
// }
// if (page.getActivePart() != null) {
// if (page.getActivePart() instanceof IViewPart) {
// IViewReference ref = (IViewReference) page.getReference(page
// .getActivePart());
// if (ref != null) {
// perspectiveMemento.putString(
// IWorkbenchConstants.TAG_ACTIVE_PART, ViewFactory
// .getKey(ref));
// }
// } else {
// perspectiveMemento.putString(
// IWorkbenchConstants.TAG_ACTIVE_PART, page
// .getActivePart().getSite().getId());
// }
// }
//
// // Save each perspective in opened order
// IPerspectiveDescriptor[] perspectives = page.getOpenPerspectives();
//
// for (int i = 0; i < perspectives.length; i++) {
// IPerspectiveDescriptor perspectiveDescriptor = perspectives[i];
// IMemento gChildMem = perspectiveMemento
// .createChild(IWorkbenchConstants.TAG_PERSPECTIVE);
// Perspective perspective = page
// .findPerspective(perspectiveDescriptor);
// perspective.saveState(gChildMem);
// }
//
// return result;
//
// }
//
// /**
// * Save the editor state. Set it to be the defaults.
// *
// * @param memento
// */
// private void saveEditorState(IMemento memento) {
//
// IMemento editorsMemento = memento
// .createChild(IWorkbenchConstants.TAG_EDITORS);
// IMemento editorArea = editorsMemento
// .createChild(IWorkbenchConstants.TAG_AREA);
// editorArea.putString(IWorkbenchConstants.TAG_ACTIVE_WORKBOOK,
// EditorSashContainer.DEFAULT_WORKBOOK_ID);
// IMemento info = editorArea.createChild(IWorkbenchConstants.TAG_INFO);
// info.putString(IWorkbenchConstants.TAG_PART,
// EditorSashContainer.DEFAULT_WORKBOOK_ID);
// IMemento folder = info.createChild(IWorkbenchConstants.TAG_FOLDER);
// folder.putInteger(IWorkbenchConstants.TAG_APPEARANCE,
// PresentationFactoryUtil.ROLE_EDITOR);
// folder.putInteger(IWorkbenchConstants.TAG_EXPANDED,
// IStackPresentationSite.STATE_RESTORED);
// IMemento presentation = folder
// .createChild(IWorkbenchConstants.TAG_PRESENTATION);
// presentation.putString(IWorkbenchConstants.TAG_ID,
// getCurrentPresentationClassName());
//
// }
//
// /**
// * Get the name of the current presentation class name.
// *
// * @return String
// */
// private String getCurrentPresentationClassName() {
//
// // update the current selection (used to look for changes on apply)
// String currentPresentationFactoryId = PrefUtil.getAPIPreferenceStore()
// .getString(
// IWorkbenchPreferenceConstants.PRESENTATION_FACTORY_ID);
// // Workbench.getInstance().getPresentationId();
//
// AbstractPresentationFactory factory = WorkbenchPlugin.getDefault()
// .getPresentationFactory(currentPresentationFactoryId);
//
// if (factory == null)
// factory = WorkbenchPlugin.getDefault().getPresentationFactory(
// IWorkbenchConstants.DEFAULT_PRESENTATION_ID);
// return factory.getClass().getName();
//
// }
//
//// RAP [rh] unused code
//// /**
//// * Return the workbench we are using.
//// *
//// * @return IWorkbench
//// */
//// private IWorkbench getWorkbench() {
//// return PlatformUI.getWorkbench();
//// }
//
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.ui.preferences.SettingsTransfer#transferSettings(org.eclipse.core.runtime.IPath)
// */
// public IStatus transferSettings(IPath newWorkspaceRoot) {
// try {
// File workspaceFile = createFileAndDirectories(newWorkspaceRoot);
//
// if (workspaceFile == null)
// return new Status(
// IStatus.ERROR,
// WorkbenchPlugin.PI_WORKBENCH,
// WorkbenchMessages.get().WorkbenchSettings_CouldNotCreateDirectories);
//
// FileOutputStream stream = new FileOutputStream(workspaceFile);
// OutputStreamWriter writer = new OutputStreamWriter(stream, "utf-8"); //$NON-NLS-1$
// XMLMemento memento = XMLMemento
// .createWriteRoot(IWorkbenchConstants.TAG_WORKBENCH);
// IStatus status = saveSettings(memento);
// if (status.getSeverity() != IStatus.OK)
// return status;
//
// memento.save(writer);
// writer.close();
//
// } catch (IOException e) {
// return new Status(IStatus.ERROR, WorkbenchPlugin.PI_WORKBENCH,
// WorkbenchMessages.get().Workbench_problemsSavingMsg, e);
//
// }
//
// return Status.OK_STATUS;
// }
//
// /**
// * Create the parent directories for the workbench layout file and then
// * return the File.
// *
// * @param newWorkspaceRoot
// * @return File the new layout file. Return <code>null</code> if the file
// * cannot be created.
// */
// private File createFileAndDirectories(IPath newWorkspaceRoot) {
// IPath newWorkspaceLocation = getNewWorkbenchStateLocation(
// newWorkspaceRoot).append(
// Workbench.DEFAULT_WORKBENCH_STATE_FILENAME);
// File workspaceFile = new File(newWorkspaceLocation.toOSString());
//
// File parent = workspaceFile.getParentFile();
// if (!parent.exists()) {
// if (!parent.mkdirs())
// return null;
// }
//
// return workspaceFile;
// }
//
// /*
// * (non-Javadoc)
// *
// * @see org.eclipse.ui.preferences.SettingsTransfer#getName()
// */
// public String getName() {
// return WorkbenchMessages.get().WorkbenchLayoutSettings_Name;
// }
//
//}