Drag the large cubes into the boxes to create new small cubes (Smart GWT) : Drag Drop « GWT « Java






Drag the large cubes into the boxes to create new small cubes (Smart GWT)

Drag the large cubes into the boxes to create new small cubes (Smart GWT)
   
/*
 * SmartGWT (GWT for SmartClient)
 * Copyright 2008 and beyond, Isomorphic Software, Inc.
 *
 * SmartGWT is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License version 3
 * as published by the Free Software Foundation.  SmartGWT is also
 * available under typical commercial license terms - see
 * http://smartclient.com/license
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 */
package com.smartgwt.sample.showcase.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.Cursor;
import com.smartgwt.client.types.DragAppearance;
import com.smartgwt.client.types.Overflow;
import com.smartgwt.client.util.EventHandler;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.Img;
import com.smartgwt.client.widgets.events.DropEvent;
import com.smartgwt.client.widgets.events.DropHandler;
import com.smartgwt.client.widgets.events.DropOutEvent;
import com.smartgwt.client.widgets.events.DropOutHandler;
import com.smartgwt.client.widgets.events.DropOverEvent;
import com.smartgwt.client.widgets.events.DropOverHandler;
import com.smartgwt.client.widgets.events.ShowContextMenuEvent;
import com.smartgwt.client.widgets.events.ShowContextMenuHandler;
import com.smartgwt.client.widgets.layout.HStack;
import com.smartgwt.client.widgets.layout.VStack;

public class Showcase implements EntryPoint {

  public void onModuleLoad() {
    RootPanel.get().add(getViewPanel());
  }

  public Canvas getViewPanel() {
    
    HStack cubes = new HStack();
    cubes.setLayoutMargin(20);
    cubes.setMembersMargin(40);
    cubes.setLayoutAlign(Alignment.CENTER);
    cubes.addMember(new DragPiece("cube_blue.png", "b"));
    cubes.addMember(new DragPiece("cube_yellow.png", "y"));
    cubes.addMember(new DragPiece("cube_green.png", "g"));
    
    HStack edges = new HStack();
    edges.setMembersMargin(20);
    edges.addMember(new PieceBin("edges/blue/6.png", "b"));
    edges.addMember(new PieceBin("edges/yellow/6.png", "y"));
    edges.addMember(new PieceBin("edges/green/6.png", "g"));
    edges.addMember(new PieceBin("edges/gray/6.png", "b", "y", "g"));
    
    VStack main = new VStack();
    main.addMember(cubes);
    main.addMember(edges);      
    return main;
}

public static class DragPiece extends Img {
    public DragPiece(String src, String dragType) {
        setSrc(src);
        setWidth(48);
        setHeight(48);
        setCursor(Cursor.MOVE);
        setAppImgDir("pieces/48/");
        setCanDrag(true);
        setCanDrop(true);
        setDragType(dragType);
        setDragAppearance(DragAppearance.TRACKER);
    }
    protected boolean setDragTracker() {
        EventHandler.setDragTracker(Canvas.imgHTML("pieces/24/" + getSrc(), 24, 24), 24, 24, 15, 15);
        return false;
    }
}

public static class DroppedPiece extends Img {
    public DroppedPiece(String src, int left, int top) {
        setSrc(src);
        setLeft(left);
        setTop(top);
        setWidth(24);
        setHeight(24);
        setAppImgDir("pieces/24/");
        setCanDragReposition(true);
        setKeepInParentRect(true);
        setDragAppearance(DragAppearance.TARGET);
        addShowContextMenuHandler(new ShowContextMenuHandler() {
            public void onShowContextMenu(ShowContextMenuEvent event) {
                destroy();
                event.cancel();
            }
        });
    }
}

public static class PieceBin extends Canvas {
    public PieceBin(String edgeImage, String... dropTypes) {
        setWidth(100);
        setHeight(100);
        setShowEdges(true);
        setEdgeSize(6);
        setEdgeImage(edgeImage);
        setOverflow(Overflow.HIDDEN);
        setCanAcceptDrop(true);
        setDropTypes(dropTypes);         
        addShowContextMenuHandler(new ShowContextMenuHandler() {
            public void onShowContextMenu(ShowContextMenuEvent event) {
                event.cancel();
            }
        });
        addDropOverHandler(new DropOverHandler() {
            public void onDropOver(DropOverEvent event) {
                if (willAcceptDrop())
                    setBackgroundColor("#ffff80");
            }
        });
        addDropOutHandler(new DropOutHandler() {
            public void onDropOut(DropOutEvent event) {
                setBackgroundColor("#ffffff");
            }
        });
        addDropHandler(new DropHandler() {
            public void onDrop(DropEvent event) {
                addChild(new DroppedPiece(
                        ((Img) EventHandler.getDragTarget()).getSrc(),
                        getOffsetX() - 15 - getEdgeSize(),
                        getOffsetY() - 15 - getEdgeSize()
                ));
            }
        });
    }
}



}

   
    
    
  








SmartGWT.zip( 9,880 k)

Related examples in the same category

1.Click the buttons to move the draggable box above or below the other boxes (Smart GWT)Click the buttons to move the draggable box above or below the other boxes (Smart GWT)
2.Drag and drop interaction (Smart GWT)Drag and drop interaction (Smart GWT)
3.Drag effect: Translucent, Shadow, Outline (Smart GWT)
4.Drag and move back and forth (Smart GWT)Drag and move back and forth (Smart GWT)
5.Drag and drop to move image (Smart GWT)Drag and drop to move image (Smart GWT)
6.Animation during drag and drop (Smart GWT)Animation during drag and drop (Smart GWT)
7.Click and drag to pan the image inside its frame. (Smart GWT)Click and drag to pan the image inside its frame. (Smart GWT)
8.Set drag types (Smart GWT)Set drag types (Smart GWT)
9.Draggable image (Smart GWT)Draggable image (Smart GWT)
10.Set resizable edge: from any side or from bottom or right (Smart GWT)Set resizable edge: from any side or from bottom or right (Smart GWT)
11.Drag Tracker Sample (Smart GWT)Drag Tracker Sample (Smart GWT)
12.Make ContentPanel draggable (Ext GWT)Make ContentPanel draggable (Ext GWT)
13.Make ContentPanel Resizable (Ext GWT)Make ContentPanel Resizable (Ext GWT)
14.Set container for dragging operation (Ext GWT)Set container for dragging operation (Ext GWT)
15.Set Draggable for the header (Ext GWT)Set Draggable for the header (Ext GWT)
16.GridStore data binding (Ext GWT)GridStore data binding (Ext GWT)
17.Basic Drag and Drop (DND) (Ext GWT)Basic Drag and Drop (DND) (Ext GWT)