src/nodes/NodeDemo.java
author Matthias Mann
Sat Feb 11 13:27:12 2012 +0100 (3 months ago)
changeset 262 f896aec65113
parent 230 c2aa01aca783
permissions -rw-r--r--
allow mouse input for scrolling, don't update text area model when nothing has changed
     1 /*
     2  * Copyright (c) 2008-2010, 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 nodes;
    31 
    32 import de.matthiasmann.twl.GUI;
    33 import de.matthiasmann.twl.ScrollPane;
    34 import de.matthiasmann.twl.renderer.lwjgl.LWJGLRenderer;
    35 import de.matthiasmann.twl.theme.ThemeManager;
    36 import org.lwjgl.opengl.Display;
    37 import org.lwjgl.opengl.DisplayMode;
    38 import org.lwjgl.opengl.GL11;
    39 import test.TestUtils;
    40 
    41 /**
    42  * @author Matthias Mann
    43  */
    44 public class NodeDemo {
    45 
    46     public static void main(String[] args) {
    47         try {
    48             Display.setDisplayMode(new DisplayMode(1024, 600));
    49             Display.create();
    50             Display.setTitle("TWL Node Demo");
    51             Display.setVSyncEnabled(true);
    52 
    53             NodeArea nodeArea = new NodeArea();
    54             ScrollPane scrollPane = new ScrollPane(nodeArea);
    55             scrollPane.setExpandContentSize(true);
    56 
    57             LWJGLRenderer renderer = new LWJGLRenderer();
    58             //renderer.setUseQuadsForLines(true);
    59             GUI gui = new GUI(scrollPane, renderer);
    60 
    61             ThemeManager theme = ThemeManager.createThemeManager(
    62                     NodeDemo.class.getResource("nodes.xml"), renderer);
    63             gui.applyTheme(theme);
    64             gui.update();
    65             
    66             Node nodeSource = nodeArea.addNode("Source");
    67             nodeSource.setPosition(50, 50);
    68             Pad nodeSourceColor = nodeSource.addPad("Color", false);
    69             Pad nodeSourceAlpha = nodeSource.addPad("Alpha", false);
    70 
    71             Node nodeSink = nodeArea.addNode("Sink");
    72             nodeSink.setPosition(350, 200);
    73             Pad nodeSinkColor = nodeSink.addPad("Color", true);
    74 
    75             nodeArea.addConnection(nodeSourceColor, nodeSinkColor);
    76 
    77             while(!Display.isCloseRequested()) {
    78                 GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
    79 
    80                 gui.update();
    81                 Display.update();
    82             }
    83 
    84             gui.destroy();
    85             theme.destroy();
    86         } catch (Exception ex) {
    87             TestUtils.showErrMsg(ex);
    88         }
    89         Display.destroy();
    90     }
    91 
    92 }