| // 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; |
| // } |
| // |
| //} |