Package org.eclipse.ecf.internal.example.collab.actions

Source Code of org.eclipse.ecf.internal.example.collab.actions.JoinGroupWizardAction

/****************************************************************************
* Copyright (c) 2004, 2007 Composent, Inc. 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:
*    Composent, Inc. - initial API and implementation
*****************************************************************************/
package org.eclipse.ecf.internal.example.collab.actions;

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.ecf.example.collab.share.EclipseCollabSharedObject;
import org.eclipse.ecf.internal.example.collab.ClientEntry;
import org.eclipse.ecf.internal.example.collab.CollabClient;
import org.eclipse.ecf.internal.example.collab.Messages;
import org.eclipse.ecf.internal.example.collab.ui.JoinGroupWizard;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IObjectActionDelegate;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
import org.eclipse.ui.PlatformUI;

public class JoinGroupWizardAction implements IObjectActionDelegate,
    IWorkbenchWindowActionDelegate {

  private static final String CONNECT_PROJECT_MENU_TEXT = Messages.JoinGroupWizardAction_PROJECT_MENU_CONNECT_TEXT;
  private static final String DISCONNECT_PROJECT_MENU_TEXT = Messages.JoinGroupWizardAction_PROJECT_MENU_DISCONNECT_TEXT;

  private IResource resource;
  private boolean connected = false;
  private IWorkbenchPart targetPart;
  private IWorkbenchWindow window;

  private String connectID = null;
 
  public JoinGroupWizardAction() {
    super();
  }
 
  public JoinGroupWizardAction(String connectID) {
    this();
    this.connectID = connectID;
  }
 
  private ClientEntry isConnected(IResource res) {
    if (res == null)
      return null;
    CollabClient client = CollabClient.getDefault();
    ClientEntry entry = client.isConnected(res,
        CollabClient.GENERIC_CONTAINER_CLIENT_NAME);
    return entry;
  }

  private void setAction(IAction action, IResource resource) {
    if (isConnected(resource) != null) {
      action.setText(DISCONNECT_PROJECT_MENU_TEXT);
      connected = true;
    } else {
      action.setText(CONNECT_PROJECT_MENU_TEXT);
      connected = false;
    }
    action.setEnabled(resource == null ? false : resource.isAccessible());
  }

  public void setActivePart(IAction action, IWorkbenchPart targetPart) {
    this.targetPart = targetPart;
  }

  public void run(IAction action) {
    if (!connected) {
      JoinGroupWizard wizard = new JoinGroupWizard(resource, PlatformUI
          .getWorkbench(), connectID);
      Shell shell = null;
      if (targetPart == null) {
        shell = (window == null)?null:window.getShell();
      } else {
        shell = targetPart.getSite().getShell();
      }
      // Create the wizard dialog
      WizardDialog dialog = new WizardDialog(shell, wizard);
      // Open the wizard dialog
      dialog.open();
    } else {
      ClientEntry client = isConnected(resource);
      if (client == null) {
        connected = false;
        action.setText(CONNECT_PROJECT_MENU_TEXT);
      } else {
        EclipseCollabSharedObject collab = client.getSharedObject();
        if (collab != null) {
          collab.chatGUIDestroy();
        }
      }
    }
  }

  public void selectionChanged(IAction action, ISelection selection) {
    if (selection instanceof IStructuredSelection) {
      IStructuredSelection iss = (IStructuredSelection) selection;
      Object obj = iss.getFirstElement();
      if (obj instanceof IProject) {
        resource = (IProject) obj;
      } else if (obj instanceof IAdaptable) {
        resource = (IProject) ((IAdaptable) obj)
            .getAdapter(IProject.class);
      } else {
        resource = ResourcesPlugin.getWorkspace().getRoot();
      }
    } else {
      resource = ResourcesPlugin.getWorkspace().getRoot();
    }
    setAction(action, resource);
  }

  public void dispose() {
    // TODO Auto-generated method stub

  }

  public void init(IWorkbenchWindow window) {
    this.window = window;
  }
}
TOP

Related Classes of org.eclipse.ecf.internal.example.collab.actions.JoinGroupWizardAction

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.