Mega Code Archive

 
Categories / Java / 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)