Package org.objectstyle.wolips.componenteditor.inspector

Source Code of org.objectstyle.wolips.componenteditor.inspector.BindingsInspectorDropHandler

package org.objectstyle.wolips.componenteditor.inspector;

import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableItem;
import org.objectstyle.wolips.bindings.api.IApiBinding;
import org.objectstyle.wolips.wodclipse.core.refactoring.RefactoringWodElement;

public class BindingsInspectorDropHandler extends AbstractBindingsDropHandler<BindingsInspector, TableItem, Object, Table> {
  private BindingsInspector _inspector;

  public BindingsInspectorDropHandler(BindingsInspector inspector) {
    super(inspector.getBindingsTableViewer().getTable());
    _inspector = inspector;
  }

  @Override
  protected Object _addHoverAnnotation(TableItem selectedItem) {
    return selectedItem;
  }

  @Override
  protected void _removeHoverAnnotation(Object annotation) {
    // DO NOTHING
  }

  @Override
  protected IAutoscroller createAutoscroller(Table editorControl) {
    return new NoOpAutoscroller();
  }

  @Override
  protected boolean dropFromColumnAtPoint(WOBrowserColumn column, Point dropPoint, BindingsDragHandler dragHandler) throws Exception {
    boolean dropFinished = true;
    try {
      Point controlDropPoint = getEditorControl().toControl(dropPoint);
      TableItem selectedItem = getSelectedItemAtPoint(_inspector, controlDropPoint);
      if (selectedItem != null) {
        IApiBinding binding = getBindingForItem(selectedItem);
        if (binding != null) {
          String droppedKeyPath = column.getSelectedKeyPath();
          RefactoringWodElement element = _inspector.getRefactoringElement();
          if (element != null) {
            try {
              element.setValueForBinding(droppedKeyPath, binding.getName());
            } catch (Exception e) {
              e.printStackTrace();
            }
          }
        }
      }
    } finally {
      removeHoverAnnotation();
    }
    return dropFinished;
  }

  @Override
  protected BindingsInspector getSelectedContainerAtPoint(Point point, boolean forDrop) throws Exception {
    return _inspector;
  }

  @Override
  protected TableItem getSelectedItemAtPoint(BindingsInspector container, Point point) {
    TableViewer tableViewer = container.getBindingsTableViewer();
    Table table = tableViewer.getTable();
    TableItem item = table.getItem(point);
    return item;
  }

  @Override
  protected Rectangle getSelectionRectangle(TableItem item) {
    TableViewer tableViewer = _inspector.getBindingsTableViewer();
    Table table = tableViewer.getTable();
    Rectangle rowBounds = item.getBounds();
    Rectangle bounds = new Rectangle(5, rowBounds.y, table.getBounds().width - 25, rowBounds.height);
    return bounds;
  }

  @Override
  protected boolean isSelectedItemChanged(TableItem oldItem, TableItem newItem) {
    return oldItem == null || newItem == null || !getBindingForItem(oldItem).getName().equals(getBindingForItem(newItem).getName());
  }

  protected IApiBinding getBindingForItem(TableItem item) {
    IApiBinding binding;
    if (item == null) {
      binding = null;
    } else {
      TableViewer tableViewer = _inspector.getBindingsTableViewer();
      Table table = tableViewer.getTable();
      int index = table.indexOf(item);
      if (index == -1) {
        binding = null;
      } else {
        binding = (IApiBinding) tableViewer.getElementAt(index);
      }
    }
    return binding;
  }
}
TOP

Related Classes of org.objectstyle.wolips.componenteditor.inspector.BindingsInspectorDropHandler

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.