Package org.eclipse.php.internal.server.ui

Source Code of org.eclipse.php.internal.server.ui.ServerEditDialog

/*******************************************************************************
* Copyright (c) 2009 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
*     Zend Technologies
*******************************************************************************/
package org.eclipse.php.internal.server.ui;

import java.util.ArrayList;
import java.util.Iterator;

import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.php.internal.server.PHPServerUIMessages;
import org.eclipse.php.internal.server.core.Server;
import org.eclipse.php.internal.ui.util.SWTUtil;
import org.eclipse.php.internal.ui.wizards.CompositeFragment;
import org.eclipse.php.internal.ui.wizards.IControlHandler;
import org.eclipse.php.internal.ui.wizards.WizardFragmentsFactoryRegistry;
import org.eclipse.php.ui.wizards.ICompositeFragmentFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabFolder;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;

public class ServerEditDialog extends TitleAreaDialog implements
    IControlHandler {

  protected static final String FRAGMENT_GROUP_ID = "org.eclipse.php.server.ui.serverWizardAndComposite"; //$NON-NLS-1$
  private Server server;
  private ArrayList runtimeComposites;
  private SelectionListener tabsListener;
  private CTabFolder tabs;
  private String tabID;

  /**
   * Instantiate a new server edit dialog.
   *
   * @param parentShell
   *            the parent SWT shell
   * @param server
   *            An assigned IServer
   */
  public ServerEditDialog(Shell parentShell, Server server) {
    super(parentShell);
    setShellStyle(getShellStyle() | SWT.RESIZE);

    this.server = server;
    runtimeComposites = new ArrayList(3);
  }

  /**
   * Instantiate a new server edit dialog.
   *
   * @param parentShell
   *            the parent SWT shell
   * @param server
   *            An assigned IServer
   * @param init
   *            selected tabe ID.
   */
  public ServerEditDialog(Shell parentShell, Server server, String tabID) {
    this(parentShell, server);
    this.tabID = tabID;
  }

  protected Control createDialogArea(Composite parent) {
    // Create a tabbed container that will hold all the fragments
    tabs = SWTUtil.createTabFolder(parent);
    ICompositeFragmentFactory[] factories = WizardFragmentsFactoryRegistry
        .getFragmentsFactories(FRAGMENT_GROUP_ID);
    for (ICompositeFragmentFactory element : factories) {
      CTabItem tabItem = new CTabItem(tabs, SWT.BORDER);
      CompositeFragment fragment = element.createComposite(tabs, this);
      fragment.setData(server);
      tabItem.setText(fragment.getDisplayName());
      tabItem.setControl(fragment);
      tabItem.setData(fragment.getId());
      runtimeComposites.add(fragment);
    }

    getShell().setText(
        PHPServerUIMessages.getString("ServerEditDialog.editServer")); //$NON-NLS-1$
    getShell().setImage(
        ServersPluginImages.get(ServersPluginImages.IMG_SERVER));

    tabsListener = new TabsSelectionListener();
    tabs.addSelectionListener(tabsListener);

    // set the init selection of tabitem.
    if (tabID != null) {
      setSelect(tabID);
    }
    return tabs;
  }

  private void setSelect(String id) {
    if (id == null) {
      return;
    }
    for (int i = 0; i < tabs.getItemCount(); i++) {
      if (id.equals(tabs.getItem(i).getData())) {
        tabs.setSelection(i);
        break;
      }
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.jface.dialogs.Dialog#cancelPressed()
   */
  protected void cancelPressed() {
    Iterator composites = runtimeComposites.iterator();
    while (composites.hasNext()) {
      ((CompositeFragment) composites.next()).performCancel();
    }
    super.cancelPressed();
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.jface.dialogs.Dialog#okPressed()
   */
  protected void okPressed() {
    Iterator composites = runtimeComposites.iterator();
    while (composites.hasNext()) {
      ((CompositeFragment) composites.next()).performOk();
    }
    super.okPressed();
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * org.eclipse.php.internal.server.apache.ui.IControlHandler#setDescription
   * (java.lang.String)
   */
  public void setDescription(String desc) {
    super.setMessage(desc);
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * org.eclipse.php.internal.server.apache.ui.IControlHandler#setImageDescriptor
   * (org.eclipse.jface.resource.ImageDescriptor)
   */
  public void setImageDescriptor(ImageDescriptor image) {
    super.setTitleImage(image.createImage());
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.php.internal.server.apache.ui.IControlHandler#update()
   */
  public void update() {
    Button button = getButton(IDialogConstants.OK_ID);
    if (button != null) {
      Iterator composites = runtimeComposites.iterator();
      while (composites.hasNext()) {
        if (!((CompositeFragment) composites.next()).isComplete()) {
          button.setEnabled(false);
          return;
        }
      }
      button.setEnabled(true);
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * org.eclipse.php.internal.server.apache.ui.IControlHandler#getServer()
   */
  public Server getServer() {
    return server;
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * org.eclipse.php.internal.server.apache.ui.IControlHandler#setServer(org
   * .eclipse.wst.server.core.IServer)
   */
  public void setServer(Server server) {
    this.server = server;
  }

  private class TabsSelectionListener implements SelectionListener {

    public void widgetDefaultSelected(SelectionEvent e) {
      // Do nothing
    }

    public void widgetSelected(SelectionEvent e) {
      CTabItem item = (CTabItem) e.item;
      CompositeFragment fragment = (CompositeFragment) item.getControl();
      setTitle(fragment.getTitle());
      fragment.validate();
    }

  }
}
TOP

Related Classes of org.eclipse.php.internal.server.ui.ServerEditDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.