GWT Java

/*
 * 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)