src/inventory/InventoryDemo.java
author Matthias Mann
Sat Feb 11 13:27:12 2012 +0100 (3 months ago)
changeset 262 f896aec65113
parent 253 25120c47f789
permissions -rw-r--r--
allow mouse input for scrolling, don't update text area model when nothing has changed
     1 /*
     2  * Copyright (c) 2008-2012, Matthias Mann
     3  *
     4  * All rights reserved.
     5  *
     6  * Redistribution and use in source and binary forms, with or without
     7  * modification, are permitted provided that the following conditions are met:
     8  *
     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.
    17  *
    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.
    29  */
    30 package inventory;
    31 
    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;
    43 
    44 /**
    45  * A simple login panel
    46  * 
    47  * @author Matthias Mann
    48  */
    49 public class InventoryDemo extends DesktopArea {
    50     
    51     public static void main(String[] args) {
    52         try {
    53             Display.setDisplayMode(new DisplayMode(800, 600));
    54             Display.create();
    55             Display.setTitle("TWL Login Panel Demo");
    56             Display.setVSyncEnabled(true);
    57 
    58             Mouse.setClipMouseCoordinatesToWindow(false);
    59             
    60             InventoryDemo demo = new InventoryDemo();
    61             
    62             LWJGLRenderer renderer = new LWJGLRenderer();
    63             GUI gui = new GUI(demo, renderer);
    64 
    65             ThemeManager theme = ThemeManager.createThemeManager(
    66                     InventoryDemo.class.getResource("inventory.xml"), renderer);
    67             gui.applyTheme(theme);
    68 
    69             gui.validateLayout();
    70             demo.positionFrame();
    71             
    72             while(!Display.isCloseRequested() && !demo.quit) {
    73                 GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
    74 
    75                 gui.update();
    76                 Display.update();
    77             }
    78 
    79             gui.destroy();
    80             theme.destroy();
    81         } catch (Exception ex) {
    82             TestUtils.showErrMsg(ex);
    83         }
    84         Display.destroy();
    85     }
    86 
    87     final FPSCounter fpsCounter;
    88     final ResizableFrame frame;
    89     final InventoryPanel inventoryPanel;
    90     
    91     boolean quit;
    92 
    93     public InventoryDemo() {
    94         fpsCounter = new FPSCounter();
    95         
    96         inventoryPanel = new InventoryPanel(10, 5);
    97         
    98         frame = new ResizableFrame();
    99         frame.setTitle("Inventory");
   100         frame.setResizableAxis(ResizableFrame.ResizableAxis.NONE);
   101         frame.add(inventoryPanel);
   102         
   103         add(fpsCounter);
   104         add(frame);
   105     }
   106 
   107     void positionFrame() {
   108         frame.adjustSize();
   109         frame.setPosition(
   110                 getInnerX() + (getInnerWidth() - frame.getWidth())/2,
   111                 getInnerY() + (getInnerHeight() - frame.getHeight())/2);
   112     }
   113     
   114     @Override
   115     protected void layout() {
   116         super.layout();
   117         
   118         // fpsCounter is bottom right
   119         fpsCounter.adjustSize();
   120         fpsCounter.setPosition(
   121                 getInnerRight() - fpsCounter.getWidth(),
   122                 getInnerBottom() - fpsCounter.getHeight());
   123     }
   124     
   125 }