Package org.fusesource.ide.fabric8.ui.actions

Source Code of org.fusesource.ide.fabric8.ui.actions.DoubleClickAction

/*******************************************************************************
* Copyright (c) 2014 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:
*     Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.fusesource.ide.fabric8.ui.actions;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.navigator.CommonViewer;
import org.eclipse.ui.progress.UIJob;
import org.fusesource.ide.commons.ui.actions.HasDoubleClickAction;
import org.fusesource.ide.fabric8.ui.navigator.Fabric;

/**
* @author lhein
*/
public class DoubleClickAction extends Action implements
    ISelectionChangedListener {
 
  private ISelection selection;
  private CommonViewer viewer;

  public DoubleClickAction() {
  }

  /*
   * (non-Javadoc)
   * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
   */
  @Override
  public void selectionChanged(SelectionChangedEvent event) {
    this.selection = event.getSelection();
    viewer = (CommonViewer) event.getSource();
  }

  /*
   * (non-Javadoc)
   * @see org.eclipse.jface.action.Action#run()
   */
  @Override
  public void run() {
    if (selection == null) return;
   
    StructuredSelection structured = (StructuredSelection) selection;
    final Object element = structured.getFirstElement();
    viewer.expandToLevel(element, 1);
    if (element instanceof HasDoubleClickAction) {
      HasDoubleClickAction hdc = (HasDoubleClickAction) element;
      Action doubleClickAction = hdc.getDoubleClickAction();
      if (doubleClickAction != null) {
        doubleClickAction.run();
      }
    } else if (element instanceof Fabric) {
      final Fabric fabric = (Fabric) element;
      UIJob job = new UIJob("Connect to Fabric: " + fabric.toString()) {
       
        /* (non-Javadoc)
         * @see org.eclipse.ui.progress.UIJob#runInUIThread(org.eclipse.core.runtime.IProgressMonitor)
         */
        @Override
        public IStatus runInUIThread(IProgressMonitor monitor) {
          IStatus answer = super.run(monitor);
          FabricConnectAction action = new FabricConnectAction(fabric);
          action.run();
          viewer.expandToLevel(element, 1);
          return answer;
        }
      };
      job.schedule();
      viewer.expandToLevel(element, 1);
    }
  }
}
TOP

Related Classes of org.fusesource.ide.fabric8.ui.actions.DoubleClickAction

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.