/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and 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: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.model.ui.views.palette.editor; import org.jboss.tools.common.model.ui.wizards.one.ServiceDialogImpl; import org.jboss.tools.common.model.ui.util.ModelUtilities; import org.eclipse.jface.window.Window; import org.eclipse.swt.widgets.Shell; import org.jboss.tools.common.model.XModel; import org.jboss.tools.common.model.impl.XModelImpl; import org.jboss.tools.common.model.undo.XUndoManager; public class PaletteEditor { private Shell shell; private PaletteDialog dialog; public PaletteEditor() {} public void setObject(Shell shell) { this.shell = shell; } public int execute() { if(dialog == null) dialog = new PaletteDialog(shell); XModel model = ModelUtilities.getPreferenceModel(); if(model.getService() == null) { model.setService(new ServiceDialogImpl()); } fireTransactionEvent("transaction_begin"); //$NON-NLS-1$ try { XUndoManager undo = model.getUndoManager(); undo.beginTransaction(); int code = dialog.open(); if(code == Window.OK) { undo.commitTransaction(); model.saveOptions(); } else { undo.rollbackTransaction(); } return code; } finally { if (dialog!=null) dialog.dispose(); dialog = null; fireTransactionEvent("transaction_end"); //$NON-NLS-1$ } } private void fireTransactionEvent(String kind) { XModelImpl m = (XModelImpl)ModelUtilities.getPreferenceModel(); m.fireStructureChanged(m.getByPath("%Palette%"), 2, kind); //$NON-NLS-1$ } }