• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*******************************************************************************
2  * Copyright 2011 See AUTHORS file.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  ******************************************************************************/
16 
17 package com.badlogic.gdx.tests;
18 
19 import com.badlogic.gdx.Gdx;
20 import com.badlogic.gdx.graphics.Color;
21 import com.badlogic.gdx.graphics.GL20;
22 import com.badlogic.gdx.graphics.Texture;
23 import com.badlogic.gdx.graphics.g2d.BitmapFont;
24 import com.badlogic.gdx.scenes.scene2d.InputEvent;
25 import com.badlogic.gdx.scenes.scene2d.Stage;
26 import com.badlogic.gdx.scenes.scene2d.ui.Image;
27 import com.badlogic.gdx.scenes.scene2d.ui.Label;
28 import com.badlogic.gdx.scenes.scene2d.ui.Table;
29 import com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle;
30 import com.badlogic.gdx.scenes.scene2d.ui.Skin;
31 import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop;
32 import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Payload;
33 import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Source;
34 import com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Target;
35 import com.badlogic.gdx.tests.utils.GdxTest;
36 
37 public class DragAndDropTest extends GdxTest {
38 	Stage stage;
39 
create()40 	public void create () {
41 		stage = new Stage();
42 		Gdx.input.setInputProcessor(stage);
43 
44 		final Skin skin = new Skin();
45 		skin.add("default", new LabelStyle(new BitmapFont(), Color.WHITE));
46 		skin.add("badlogic", new Texture("data/badlogic.jpg"));
47 
48 		Image sourceImage = new Image(skin, "badlogic");
49 		sourceImage.setBounds(50, 125, 100, 100);
50 		stage.addActor(sourceImage);
51 
52 		Image validTargetImage = new Image(skin, "badlogic");
53 		validTargetImage.setBounds(200, 50, 100, 100);
54 		stage.addActor(validTargetImage);
55 
56 		Image invalidTargetImage = new Image(skin, "badlogic");
57 		invalidTargetImage.setBounds(200, 200, 100, 100);
58 		stage.addActor(invalidTargetImage);
59 
60 		DragAndDrop dragAndDrop = new DragAndDrop();
61 		dragAndDrop.addSource(new Source(sourceImage) {
62 			public Payload dragStart (InputEvent event, float x, float y, int pointer) {
63 				Payload payload = new Payload();
64 				payload.setObject("Some payload!");
65 
66 				payload.setDragActor(new Label("Some payload!", skin));
67 
68 				Label validLabel = new Label("Some payload!", skin);
69 				validLabel.setColor(0, 1, 0, 1);
70 				payload.setValidDragActor(validLabel);
71 
72 				Label invalidLabel = new Label("Some payload!", skin);
73 				invalidLabel.setColor(1, 0, 0, 1);
74 				payload.setInvalidDragActor(invalidLabel);
75 
76 				return payload;
77 			}
78 		});
79 		dragAndDrop.addTarget(new Target(validTargetImage) {
80 			public boolean drag (Source source, Payload payload, float x, float y, int pointer) {
81 				getActor().setColor(Color.GREEN);
82 				return true;
83 			}
84 
85 			public void reset (Source source, Payload payload) {
86 				getActor().setColor(Color.WHITE);
87 			}
88 
89 			public void drop (Source source, Payload payload, float x, float y, int pointer) {
90 				System.out.println("Accepted: " + payload.getObject() + " " + x + ", " + y);
91 			}
92 		});
93 		dragAndDrop.addTarget(new Target(invalidTargetImage) {
94 			public boolean drag (Source source, Payload payload, float x, float y, int pointer) {
95 				getActor().setColor(Color.RED);
96 				return false;
97 			}
98 
99 			public void reset (Source source, Payload payload) {
100 				getActor().setColor(Color.WHITE);
101 			}
102 
103 			public void drop (Source source, Payload payload, float x, float y, int pointer) {
104 			}
105 		});
106 	}
107 
render()108 	public void render () {
109 		Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
110 		stage.act(Gdx.graphics.getDeltaTime());
111 		stage.draw();
112 	}
113 
resize(int width, int height)114 	public void resize (int width, int height) {
115 		stage.getViewport().update(width, height, true);
116 	}
117 
dispose()118 	public void dispose () {
119 		stage.dispose();
120 	}
121 }
122