allow mouse input for scrolling, don't update text area model when nothing has changed
2 * Copyright (c) 2008-2012, Matthias Mann
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
9 * * Redistributions of source code must retain the above copyright notice,
10 * this list of conditions and the following disclaimer.
11 * * Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * * Neither the name of Matthias Mann nor the names of its contributors may
15 * be used to endorse or promote products derived from this software
16 * without specific prior written permission.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
22 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 import de.matthiasmann.twl.DesktopArea;
33 import de.matthiasmann.twl.FPSCounter;
34 import de.matthiasmann.twl.GUI;
35 import de.matthiasmann.twl.ResizableFrame;
36 import de.matthiasmann.twl.renderer.lwjgl.LWJGLRenderer;
37 import de.matthiasmann.twl.theme.ThemeManager;
38 import org.lwjgl.input.Mouse;
39 import org.lwjgl.opengl.Display;
40 import org.lwjgl.opengl.DisplayMode;
41 import org.lwjgl.opengl.GL11;
42 import test.TestUtils;
45 * A simple login panel
47 * @author Matthias Mann
49 public class InventoryDemo extends DesktopArea {
51 public static void main(String[] args) {
53 Display.setDisplayMode(new DisplayMode(800, 600));
55 Display.setTitle("TWL Login Panel Demo");
56 Display.setVSyncEnabled(true);
58 Mouse.setClipMouseCoordinatesToWindow(false);
60 InventoryDemo demo = new InventoryDemo();
62 LWJGLRenderer renderer = new LWJGLRenderer();
63 GUI gui = new GUI(demo, renderer);
65 ThemeManager theme = ThemeManager.createThemeManager(
66 InventoryDemo.class.getResource("inventory.xml"), renderer);
67 gui.applyTheme(theme);
72 while(!Display.isCloseRequested() && !demo.quit) {
73 GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
81 } catch (Exception ex) {
82 TestUtils.showErrMsg(ex);
87 final FPSCounter fpsCounter;
88 final ResizableFrame frame;
89 final InventoryPanel inventoryPanel;
93 public InventoryDemo() {
94 fpsCounter = new FPSCounter();
96 inventoryPanel = new InventoryPanel(10, 5);
98 frame = new ResizableFrame();
99 frame.setTitle("Inventory");
100 frame.setResizableAxis(ResizableFrame.ResizableAxis.NONE);
101 frame.add(inventoryPanel);
107 void positionFrame() {
110 getInnerX() + (getInnerWidth() - frame.getWidth())/2,
111 getInnerY() + (getInnerHeight() - frame.getHeight())/2);
115 protected void layout() {
118 // fpsCounter is bottom right
119 fpsCounter.adjustSize();
120 fpsCounter.setPosition(
121 getInnerRight() - fpsCounter.getWidth(),
122 getInnerBottom() - fpsCounter.getHeight());