Example usage for com.badlogic.gdx.scenes.scene2d.ui ScrollPane layout

List of usage examples for com.badlogic.gdx.scenes.scene2d.ui ScrollPane layout

Introduction

In this page you can find the example usage for com.badlogic.gdx.scenes.scene2d.ui ScrollPane layout.

Prototype

public void layout() 

Source Link

Usage

From source file:com.vlaaad.dice.ui.windows.DiceWindow.java

License:Open Source License

@Override
protected void doShow(final UserData userData) {
    final Table items = new Table();
    final ScrollPane pane = new ScrollPane(items, new ScrollPane.ScrollPaneStyle()) {

        @Override/*from w ww .j av  a 2  s  . c o  m*/
        public void layout() {
            float w = items.getPrefWidth();
            float h = Math.min(getParent().getHeight(), items.getPrefHeight());
            if (w != getWidth() || h != getHeight()) {
                setSize(w, h);
                invalidateHierarchy();
            }
            super.layout();
        }
    };
    pane.setTouchable(Touchable.childrenOnly);
    pane.setOverscroll(false, false);
    pane.setCancelTouchFocus(false);
    pane.addListener(new ChangeListener() {

        @Override
        public void changed(ChangeEvent event, Actor actor) {
            pane.layout();
            pane.layout();
            items.layout();
            if (actor instanceof Layout)
                ((Layout) actor).layout();
            pane.layout();
            pane.layout();
            pane.scrollTo(actor.getX(), actor.getY(), actor.getWidth(), actor.getHeight() + 100);
        }
    });

    Iterable<Die> dice = userData.dice();
    int i = 1;
    int count = userData.diceCount();
    for (Die die : dice) {
        DiePane diePane = new DiePane(die, userData, diceWindowGroup);
        table.add(diePane);
        diePane.setWidth(0);
        diePane.pack();
        diePane.setWidth(ViewController.CELL_SIZE * 6.6f);
        Cell cell = items.add(diePane).fillX().maxWidth(ViewController.CELL_SIZE * 6.6f);
        if (i != count) {
            cell.padBottom(-1);
        }
        cell.row();
        map.put(die, diePane);
        diePane.info.addListener(createMinimizeListener(die, dice));
        i++;
    }
    items.pack();
    table.add(pane).width(items.getPrefWidth());//.size(items.getPrefWidth(), 200);
}

From source file:net.noviden.towerdefense.MapEditor.MapEditorSelectorScreen.java

License:Open Source License

public MapEditorSelectorScreen(final TowerDefense towerDefense) {
    this.towerDefense = towerDefense;

    Skin skin = new Skin(Gdx.files.internal("assets/uiskin.json"));

    Texture texture = new Texture(Gdx.files.internal("selectedMap.png"));
    _selectedMapIdentifierImage = new Image(texture);

    stage = new Stage();

    rootTable = new Table();
    rootTable.setFillParent(true);/*from  w  ww .  j  a  va2 s . c o m*/

    Table containerTable = new Table();
    _mapListTable = new Table();

    updateMapList();

    ScrollPane scrollPane = new ScrollPane(_mapListTable);
    scrollPane.layout();
    scrollPane.setFadeScrollBars(false);

    Table operationsTable = new Table();
    TextButton createButton = new TextButton("Create", skin);
    TextButton selectButton = new TextButton("Edit", skin);
    TextButton cloneButton = new TextButton("Clone", skin);
    TextButton deleteButton = new TextButton("Delete", skin);

    TextButton exitButton = new TextButton("Main Menu", skin);

    Label screenTitleLabel = new Label("Map Editor Browser", skin);

    containerTable.add(scrollPane).fillX().fillY();

    operationsTable.add(screenTitleLabel).pad(5.0f);
    operationsTable.add(createButton).pad(5.0f);
    operationsTable.add(selectButton).pad(5.0f);
    operationsTable.add(cloneButton).pad(5.0f);
    operationsTable.add(deleteButton).pad(5.0f);
    operationsTable.add(exitButton).pad(5.0f);

    rootTable.add(operationsTable).expandY().top().expandX().right();
    rootTable.row();
    rootTable.add(containerTable).top();
    rootTable.center();

    stage.addActor(rootTable);

    Gdx.input.setInputProcessor(stage);

    // set up input listeners
    exitButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            towerDefense.setScreen(new MainMenuScreen(towerDefense));
        }
    });

    createButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            towerDefense.setScreen(new MapCreatorScreen(towerDefense));
        }
    });

    selectButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            if (_selectedMap != null)
                towerDefense.setScreen(new MapEditorScreen(towerDefense, _selectedMap));
        }
    });

    cloneButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            if (_selectedMap != null) {
                towerDefense.maps.add(_selectedMap.clone());
                updateMapList();
            }
        }
    });

    deleteButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            if (_selectedMap != null) {
                towerDefense.maps.remove(_selectedMap);
                updateMapList();

                _selectedMap = null;
            }
        }
    });
}

From source file:net.noviden.towerdefense.Screens.GameSettingsScreen.java

License:Open Source License

public GameSettingsScreen(final TowerDefense pTowerDefense) {
    _towerDefense = pTowerDefense;//from   w w  w . j  a  v  a2  s.  co m

    _modifiedKeyboardShortcutsMap = new HashMap<Integer, GameSettings.Actions>();

    _currentlySelectedActionLabel = null;
    _currentlySelectedShortcut = null;
    _previouslySelectedKey = -1;

    Skin skin = new Skin(Gdx.files.internal("assets/uiskin.json"));

    _mainStage = new Stage();

    Table rootTable = new Table();
    rootTable.setFillParent(true);

    _mainStage.addActor(rootTable);

    // set up ui elements
    Label musicVolumeLabel = new Label("Music Volume", skin);
    final Slider musicVolumeSlider = new Slider(0.0f, 1.0f, 0.1f, false, skin);
    musicVolumeSlider.setValue(GameSettings.getMusicVolume());

    Label sfxVolumeLabel = new Label("Sound Effects Volume", skin);
    final Slider sfxVolumeSlider = new Slider(0.0f, 1.0f, 0.1f, false, skin);
    sfxVolumeSlider.setValue(GameSettings.getSoundVolume());

    Table volumeTable = new Table();
    volumeTable.add(musicVolumeLabel);
    volumeTable.add(musicVolumeSlider);
    volumeTable.row();
    volumeTable.add(sfxVolumeLabel);
    volumeTable.add(sfxVolumeSlider).pad(8.0f);

    Table keyboardShortcutsTable = new Table();

    HashMap<Integer, GameSettings.Actions> currentShortcutMap = GameSettings.getShortcutMap();

    // for sorting the settings on screen
    Collection<GameSettings.Actions> values = currentShortcutMap.values();
    ArrayList<String> valueNames = new ArrayList<String>();
    for (GameSettings.Actions action : values) {
        valueNames.add(action.toString());
    }

    Collections.sort(valueNames);

    for (String s : valueNames) {
        final Label actionLabel = new Label(s, skin);
        final TextButton shortcutButton = new TextButton(
                Input.Keys.toString(GameSettings.getReverse(GameSettings.Actions.valueOf(s))), skin);

        keyboardShortcutsTable.add(actionLabel).pad(10.0f);
        keyboardShortcutsTable.add(shortcutButton);
        keyboardShortcutsTable.row();

        shortcutButton.addListener(new ClickListener() {
            @Override
            public void clicked(InputEvent event, float x, float y) {

                if (_currentlySelectedShortcut == null) {
                    _currentlySelectedActionLabel = actionLabel;
                    _currentlySelectedShortcut = shortcutButton;
                    _previouslySelectedKey = Input.Keys.valueOf(shortcutButton.getText().toString());

                    shortcutButton.setText("Press any un-set key!");
                }
            }
        });
    }

    ScrollPane keyboardShortcutsScrollPane = new ScrollPane(keyboardShortcutsTable);
    keyboardShortcutsScrollPane.layout();

    // add in save and exit buttons
    Table exitFunctionalityTable = new Table();

    TextButton saveAndExitButton = new TextButton("Save and Exit", skin);
    TextButton exitWithoutSavingButton = new TextButton("Exit Without Saving", skin);

    exitFunctionalityTable.add(saveAndExitButton).pad(10.0f);
    exitFunctionalityTable.add(exitWithoutSavingButton);

    // finally, construct display table
    rootTable.add(volumeTable);
    rootTable.row();
    rootTable.add(keyboardShortcutsScrollPane);
    rootTable.row();
    rootTable.add(exitFunctionalityTable);

    InputMultiplexer multiplexer = new InputMultiplexer(_mainStage, new MyInputProcessor());

    Gdx.input.setInputProcessor(multiplexer);

    // add in event listeners here

    exitWithoutSavingButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            _towerDefense.setScreen(new net.noviden.towerdefense.Screens.MainMenuScreen(_towerDefense));
        }
    });

    saveAndExitButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            // attempt to save settings

            GameSettings.setMusicVolume(musicVolumeSlider.getPercent());

            GameSettings.setSoundVolume(sfxVolumeSlider.getPercent());

            // save keyboard shortcuts
            GameSettings.putShortcuts(_modifiedKeyboardShortcutsMap);

            // return to main menu
            _towerDefense.setScreen(new net.noviden.towerdefense.Screens.MainMenuScreen(_towerDefense));

            dispose();
        }
    });
}

From source file:net.noviden.towerdefense.Screens.MapSelectorScreen.java

License:Open Source License

public MapSelectorScreen(final TowerDefense towerDefense) {
    this.towerDefense = towerDefense;

    Skin skin = new Skin(Gdx.files.internal("assets/uiskin.json"));

    stage = new Stage();

    rootTable = new Table();
    rootTable.setFillParent(true);//from   w ww. j  a  v a 2 s  .co m

    Table containerTable = new Table();
    Table mapListTable = new Table();

    for (int i = 0; i < towerDefense.maps.size(); i++) {
        if (i > 0 && i % 3 == 0) {
            mapListTable.row();
        }

        final Map map = towerDefense.maps.get(i);

        ClickListener clickListener = new ClickListener() {
            @Override
            public void clicked(InputEvent event, float x, float y) {
                towerDefense.setScreen(new net.noviden.towerdefense.Screens.GameScreen(towerDefense, map));
            }
        };
        TextButton textButton = new TextButton(map.getName(), skin);
        textButton.addListener(clickListener);

        ImageButton imageButton = new ImageButton(MapThumbnail.createThumbnail(map, 200));
        imageButton.addListener(clickListener);

        mapListTable.add(imageButton).pad(10.0f);
    }

    ScrollPane scrollPane = new ScrollPane(mapListTable);
    scrollPane.layout();
    scrollPane.setFadeScrollBars(false);

    TextButton exitButton = new TextButton("Main Menu", skin);
    exitButton.addListener(new ClickListener() {
        @Override
        public void clicked(InputEvent event, float x, float y) {
            towerDefense.setScreen(new MainMenuScreen(towerDefense));
        }
    });

    containerTable.add(scrollPane).fillX().fillY();

    rootTable.add(containerTable).expandY().pad(10.0f);
    rootTable.row();
    rootTable.add(exitButton).bottom().expandX().right().pad(8.0f);

    stage.addActor(rootTable);

    Gdx.input.setInputProcessor(stage);
}