/******************************************************************************* * Copyright (c) 2012-2016 Codenvy, S.A. * 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: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.ide.extension.machine.client.perspective.widgets.machine.panel; import elemental.events.KeyboardEvent; import elemental.events.MouseEvent; import com.google.gwt.core.client.GWT; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; import com.google.inject.Singleton; import org.eclipse.che.api.machine.shared.dto.MachineStateDto; import org.eclipse.che.ide.api.parts.PartStackUIResources; import org.eclipse.che.ide.api.parts.base.BaseView; import org.eclipse.che.ide.ui.tree.Tree; import org.eclipse.che.ide.ui.tree.TreeNodeElement; import org.eclipse.che.ide.util.input.SignalEvent; /** * Provides implementation of view to display machines on special panel. * * @author Dmitry Shnurenko */ @Singleton public class MachinePanelViewImpl extends BaseView<MachinePanelView.ActionDelegate> implements MachinePanelView { interface MachinePanelImplUiBinder extends UiBinder<Widget, MachinePanelViewImpl> { } private static final MachinePanelImplUiBinder UI_BINDER = GWT.create(MachinePanelImplUiBinder.class); @UiField(provided = true) Tree<MachineTreeNode> tree; @Inject public MachinePanelViewImpl(org.eclipse.che.ide.Resources resources, PartStackUIResources partStackUIResources, MachineDataAdapter adapter, MachineTreeRenderer renderer) { super(partStackUIResources); tree = Tree.create(resources, adapter, renderer); setContentWidget(UI_BINDER.createAndBindUi(this)); tree.setTreeEventHandler(new Tree.Listener<MachineTreeNode>() { @Override public void onNodeAction(TreeNodeElement<MachineTreeNode> node) { } @Override public void onNodeClosed(TreeNodeElement<MachineTreeNode> node) { } @Override public void onNodeContextMenu(int mouseX, int mouseY, TreeNodeElement<MachineTreeNode> node) { } @Override public void onNodeDragStart(TreeNodeElement<MachineTreeNode> node, MouseEvent event) { } @Override public void onNodeDragDrop(TreeNodeElement<MachineTreeNode> node, MouseEvent event) { } @Override public void onNodeExpanded(TreeNodeElement<MachineTreeNode> node) { } @Override public void onNodeSelected(TreeNodeElement<MachineTreeNode> node, SignalEvent event) { Object selectedNode = node.getData().getData(); if (selectedNode instanceof MachineStateDto) { delegate.onMachineSelected((MachineStateDto)selectedNode); } } @Override public void onRootContextMenu(int mouseX, int mouseY) { } @Override public void onRootDragDrop(MouseEvent event) { } @Override public void onKeyboard(KeyboardEvent event) { } }); } /** {@inheritDoc} */ @Override public void setData(MachineTreeNode root) { tree.asWidget().setVisible(true); tree.getModel().setRoot(root); tree.renderTree(-1); } /** {@inheritDoc} */ @Override public void selectNode(MachineTreeNode machineNode) { if (machineNode == null) { return; } tree.getSelectionModel().selectSingleNode(machineNode); delegate.onMachineSelected((MachineStateDto)machineNode.getData()); } }