Package org.dyno.visual.swing.widgets.grouplayout

Source Code of org.dyno.visual.swing.widgets.grouplayout.BeanHover

/************************************************************************************
* Copyright (c) 2008 William Chen.                                                 *
*                                                                                  *
* 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 *
*                                                                                  *
* Use is subject to the terms of Eclipse Public License v1.0.                      *
*                                                                                  *
* Contributors:                                                                    *
*     William Chen - initial API and implementation.                               *
************************************************************************************/

package org.dyno.visual.swing.widgets.grouplayout;

import java.awt.Insets;
import java.awt.Point;
import java.awt.Rectangle;

import javax.swing.JComponent;

import org.dyno.visual.swing.layouts.Alignment;
import org.dyno.visual.swing.layouts.Constraints;
import org.dyno.visual.swing.layouts.GroupLayout;
import org.dyno.visual.swing.layouts.Leading;
import org.dyno.visual.swing.layouts.Spring;
import org.dyno.visual.swing.plugin.spi.CompositeAdapter;
import org.dyno.visual.swing.plugin.spi.WidgetAdapter;

class BeanHover extends AbstractDragOperation {
  public BeanHover(GroupLayoutAdapter adapter, WidgetAdapter tracingAdapter, GroupLayout layout,
      JComponent container) {
    super(adapter, tracingAdapter, layout, container);
  }
  public boolean dragOver(Point p) {
    if (last_point == null)
      return dragEnter(p);
    CompositeAdapter parent = (CompositeAdapter) WidgetAdapter
        .getWidgetAdapter(container);
    if (p.equals(last_point))
      return false;
    Point oldp = dragComponent(p);
    Point newp = parent.getMascotLocation();
    return oldp != null && !oldp.equals(newp);
  }

 
  public boolean dragEnter(Point p) {
    adapter.setHovered(true);
    CompositeAdapter parent = (CompositeAdapter) WidgetAdapter
        .getWidgetAdapter(container);
    parent.setMascotLocation(p);
    last_point = p;
    return true;
  }

 
  public boolean drop(Point p) {
    Insets insets = container.getInsets();
    WidgetAdapter dropAdapter = tracingAdapter;
    JComponent drop = (JComponent) dropAdapter.getParentContainer();
    QuartetPair pair = calMascotLocation(drop, p, azimuth);
    Point hot = dropAdapter.getHotspotPoint();
    Spring spring = new Spring(10, 10);// TODO should be replaced by a
    // container gap.
    if (pair == null) {
      Point np = new Point(p.x - hot.x, p.y - hot.y);
      Constraints constraints = new Constraints(new Leading(np.x
          - insets.left, drop.getWidth(), spring), new Leading(np.y
          - insets.top, drop.getHeight(), spring));
      container.add(drop, constraints);
    } else {
      Alignment horizontal = null;
      Alignment vertical = null;
      if (pair.hQuart == null && pair.vQuart != null) {
        int x = pair.vQuart.masc - hot.x;
        int y = p.y - hot.y;
        int width = drop.getWidth();
        int height = drop.getHeight();
        vertical = new Leading(y - insets.top, height, spring);
        horizontal = pair.vQuart.anchor.createHoveredAxis(drop,
            new Rectangle(x, y, width, height));
      } else if (pair.hQuart != null && pair.vQuart == null) {
        int x = p.x - hot.x;
        int y = pair.hQuart.masc - hot.y;
        int width = drop.getWidth();
        int height = drop.getHeight();
        horizontal = new Leading(x - insets.left, width, spring);
        vertical = pair.hQuart.anchor.createHoveredAxis(drop,
            new Rectangle(x, y, width, height));
      } else if (pair.hQuart != null && pair.vQuart != null) {
        int x = pair.vQuart.masc - hot.x;
        int y = pair.hQuart.masc - hot.y;
        int width = drop.getWidth();
        int height = drop.getHeight();
        vertical = pair.hQuart.anchor.createHoveredAxis(drop,
            new Rectangle(x, y, width, height));
        horizontal = pair.vQuart.anchor.createHoveredAxis(drop,
            new Rectangle(x, y, width, height));
      }
      assert vertical != null && horizontal != null;
      Constraints constraints = new Constraints(horizontal, vertical);
      container.add(drop, constraints);
    }
    last_point = null;
    return true;
  }

 
  public boolean dragExit(Point p) {
    return true;
  }
}

TOP

Related Classes of org.dyno.visual.swing.widgets.grouplayout.BeanHover

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.