com.aptana.webserver.ui.internal.actions.EditServerHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.aptana.webserver.ui.internal.actions.EditServerHandler.java

Source

/**
 * Aptana Studio
 * Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved.
 * Licensed under the terms of the GNU Public License (GPL) v3 (with exceptions).
 * Please see the license.html included with this distribution for details.
 * Any modifications to this file must keep this entire header intact.
 */
package com.aptana.webserver.ui.internal.actions;

import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.window.SameShellProvider;
import org.eclipse.jface.window.Window;
import org.eclipse.ui.handlers.HandlerUtil;

import com.aptana.ui.IPropertyDialog;
import com.aptana.ui.PropertyDialogsRegistry;
import com.aptana.ui.util.UIUtils;
import com.aptana.webserver.core.IServer;

/**
 * Add a new IServer
 * 
 * @author cwilliams
 */
public class EditServerHandler extends AbstractHandler {

    public Object execute(ExecutionEvent event) throws ExecutionException {
        ISelection selection = HandlerUtil.getCurrentSelection(event);
        if (selection.isEmpty() || !(selection instanceof IStructuredSelection)) {
            return null;
        }

        IServer server = (IServer) ((IStructuredSelection) selection).getFirstElement();
        if (server != null) {
            editServerConfiguration(server);
        }
        return null;
    }

    static boolean editServerConfiguration(IServer server) {
        try {
            Dialog dlg = PropertyDialogsRegistry.getInstance().createPropertyDialog(server,
                    new SameShellProvider(UIUtils.getActiveShell()));
            if (dlg != null) {
                if (dlg instanceof IPropertyDialog) {
                    ((IPropertyDialog) dlg).setPropertySource(server);
                }
                return dlg.open() == Window.OK;
            }
        } catch (CoreException e) {
            UIUtils.showErrorMessage("Failed to open server preferences dialog", e); //$NON-NLS-1$
        }
        return false;
    }

}