blob: ed5d845cc64884b5d49f8768408500959fcfe676 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.authoring.ui.editors;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.epf.authoring.ui.AuthoringUIPlugin;
import org.eclipse.epf.authoring.ui.AuthoringUIResources;
import org.eclipse.epf.authoring.ui.forms.MethodLibraryDescriptionFormPage;
import org.eclipse.epf.authoring.ui.views.LibraryView;
import org.eclipse.epf.common.ui.util.MsgDialog;
import org.eclipse.epf.library.ILibraryManager;
import org.eclipse.epf.library.LibraryService;
import org.eclipse.epf.persistence.MultiFileIOException;
import org.eclipse.epf.persistence.MultiFileSaveUtil;
import org.eclipse.epf.uma.MethodElement;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PartInitException;
/**
* The method library editor.
*
* @author Phong Nguyen Le
* @author Kelvin Low
* @since 1.0
*/
public class MethodLibraryEditor extends MethodElementEditor {
/**
* @see org.eclipse.epf.authoring.ui.editors.MethodElementEditor#setPartName()
*/
public void setPartName() {
String partName = AuthoringUIResources.MethodLibraryEditor_title;
if (elementObj.getName() != null) {
partName += elementObj.getName();
;
}
setPartName(partName);
}
/**
* @see org.eclipse.epf.authoring.ui.editors.MethodElementEditor#addPages()
*/
protected void addPages() {
try {
addPage(new MethodLibraryDescriptionFormPage(this));
createPreviewPage();
} catch (PartInitException e) {
e.printStackTrace();
}
}
/**
* @see org.eclipse.epf.authoring.ui.editors.MethodElementEditor#dispose()
*/
public void dispose() {
// Close all the editors.
getSite().getPage().closeAllEditors(false);
// Clear the Library View.
LibraryView.getView().setInputForViewer(null);
try {
// Close the current method library.
LibraryService.getInstance().closeCurrentMethodLibrary();
} catch (Exception e) {
}
super.dispose();
}
/**
* @see org.eclipse.epf.authoring.ui.editors.MethodElementEditor#doSave(org.eclipse.core.runtime.IProgressMonitor)
*/
public void doSave(IProgressMonitor monitor) {
if (monitor != null) {
monitor
.beginTask(
AuthoringUIResources.MethodLibraryEditor_savemodellibrary, IProgressMonitor.UNKNOWN);
try {
LibraryService.getInstance().saveCurrentMethodLibrary();
firePropertyChange(IEditorPart.PROP_DIRTY);
} catch (Exception ex) {
ex.printStackTrace();
String errMsg = AuthoringUIResources.MethodLibraryEditor_err_save;
String errDetails = ""; //$NON-NLS-1$
if (ex.getMessage() != null) {
errDetails = ex.getMessage();
}
if (ex instanceof MultiFileIOException) {
Object troubleObj = ((MultiFileIOException) ex)
.getTroubleObject();
if (troubleObj instanceof MethodElement) {
errDetails = AuthoringUIResources.MethodLibraryEditor_troubleobject + MultiFileSaveUtil.getPath((MethodElement) troubleObj);
}
}
String title = AuthoringUIResources.MethodLibraryEditor_error_dialog_title;
String problem = AuthoringUIResources.MethodLibraryEditor_save_library_problem_msg;
MsgDialog dialog = AuthoringUIPlugin.getDefault()
.getMsgDialog();
dialog.displayError(title, problem, errMsg, errDetails);
} finally {
monitor.done();
}
}
}
/**
* @see org.eclipse.epf.authoring.ui.editors.MethodElementEditor#isDirty()
*/
public boolean isDirty() {
ILibraryManager manager = (ILibraryManager) LibraryService
.getInstance().getCurrentLibraryManager();
return manager != null ? manager.isMethodLibraryModified() : false;
}
}