List of usage examples for com.badlogic.gdx.scenes.scene2d.ui VerticalGroup align
int align
To view the source code for com.badlogic.gdx.scenes.scene2d.ui VerticalGroup align.
Click Source Link
From source file:com.agateau.ui.UiBuilder.java
License:Apache License
protected VerticalGroup createVerticalGroup(XmlReader.Element element) { VerticalGroup group = new VerticalGroup(); group.space(element.getFloatAttribute("spacing", 0)); int align = parseAlign(element); if (align != -1) { group.align(align); }// w w w . j av a 2 s .c o m return group; }
From source file:com.forerunnergames.peril.client.ui.screens.menus.modes.classic.creategame.ClassicGameModeCreateGameMenuScreen.java
License:Open Source License
public ClassicGameModeCreateGameMenuScreen(final MenuScreenWidgetFactory widgetFactory, final ScreenChanger screenChanger, final ScreenSize screenSize, final MouseInput mouseInput, final Batch batch, final CountryCounter countryCounter, final MBassador<Event> eventBus) { super(widgetFactory, screenChanger, screenSize, mouseInput, batch, eventBus); Arguments.checkIsNotNull(widgetFactory, "widgetFactory"); Arguments.checkIsNotNull(countryCounter, "countryCounter"); this.widgetFactory = widgetFactory; this.countryCounter = countryCounter; errorDialog = createErrorDialog();//from w w w. j a va 2s . c o m addTitle(TITLE_TEXT, Align.bottomLeft, 40); addSubTitle(SUBTITLE_TEXT); playerNameTextField = widgetFactory.createPlayerNameTextField(); clanAcronymTextField = widgetFactory.createClanAcronymTextField(); serverNameTextField = widgetFactory.createServerNameTextField(); clanAcronymCheckBox = widgetFactory.createClanAcronymCheckBox(new ChangeListener() { @Override public void changed(final ChangeEvent event, final Actor actor) { clanAcronymTextField.setText(clanAcronymCheckBox.isChecked() ? clanAcronymTextField.getText() : ""); clanAcronymTextField.setDisabled(!clanAcronymCheckBox.isChecked()); } }); clanAcronymCheckBox.setChecked(!clanAcronymTextField.getText().isEmpty()); clanAcronymTextField.setDisabled(!clanAcronymCheckBox.isChecked()); // @formatter:off humanPlayerLimitLabel = widgetFactory .createPlayerLimitLabel(String.valueOf(InputSettings.INITIAL_CLASSIC_MODE_HUMAN_PLAYER_LIMIT)); aiPlayerLimitLabel = widgetFactory .createPlayerLimitLabel(String.valueOf(InputSettings.INITIAL_CLASSIC_MODE_AI_PLAYER_LIMIT)); playMapNameLabel = widgetFactory.createPlayMapNameLabel(); totalCountryCount = calculateCurrentPlayMapTotalCountryCount(); // @formatter:on customizeHumanPlayersButton = widgetFactory .createCustomizePlayersButton(new ClickListener(Input.Buttons.LEFT) { @Override public void clicked(final InputEvent event, final float x, final float y) { // TODO Show Players Dialog. updateHumanPlayerLimit(); updateWinPercentSelectBoxItems(); } }); customizeAiPlayersButton = widgetFactory .createCustomizePlayersButton(new ClickListener(Input.Buttons.LEFT) { @Override public void clicked(final InputEvent event, final float x, final float y) { // TODO Show Players Dialog. updateAiPlayerLimit(); updateWinPercentSelectBoxItems(); } }); customizePlayMapButton = widgetFactory.createCustomizePlayMapButton(new ClickListener(Input.Buttons.LEFT) { @Override public void clicked(final InputEvent event, final float x, final float y) { // TODO Show Play Map Dialog. // TODO Add refresh button to Play Map Dialog to re-load play maps. playMaps = loadPlayMaps(); currentPlayMap = nextPlayMap(); playMapNameLabel.setText(currentPlayMap.getName()); totalCountryCount = calculateCurrentPlayMapTotalCountryCount(); updateWinPercentSelectBoxItems(); } }); // @formatter:off spectatorLimitSelectBox = widgetFactory.createSpectatorsSelectBox(); final Array<Integer> spectatorLimits = new Array<>( ClassicGameRules.MAX_SPECTATORS - ClassicGameRules.MIN_SPECTATORS + 1); for (int i = ClassicGameRules.MIN_SPECTATORS; i <= ClassicGameRules.MAX_SPECTATORS; ++i) { spectatorLimits.add(i); } spectatorLimitSelectBox.setItems(spectatorLimits); spectatorLimitSelectBox.setSelected(InputSettings.INITIAL_SPECTATOR_LIMIT); // @formatter:off // @formatter:on initialCountryAssignmentSelectBox = widgetFactory.createInitialCountryAssignmentSelectBox(); final Array<String> initialCountryAssignments = new Array<>(InitialCountryAssignment.count()); for (final InitialCountryAssignment initialCountryAssignment : InitialCountryAssignment.values()) { initialCountryAssignments.add(Strings.toProperCase(initialCountryAssignment.name())); } initialCountryAssignmentSelectBox.setItems(initialCountryAssignments); initialCountryAssignmentSelectBox .setSelected(Strings.toProperCase(InputSettings.INITIAL_CLASSIC_MODE_COUNTRY_ASSIGNMENT.name())); // @formatter:on winPercentSelectBox = widgetFactory.createWinPercentSelectBox(); updateWinPercentSelectBoxItems(); selectInitialWinPercentItem(); // @formatter:off playerSettingsSectionTitleLabel = widgetFactory.createPlayerSettingsSectionTitleLabel(); playerNameSettingLabel = widgetFactory.createPlayerNameSettingLabel(); clanTagSettingLabel = widgetFactory.createClanTagSettingLabel(); gameSettingsSectionTitleLabel = widgetFactory.createGameSettingsSectionTitleLabel(); serverNameSettingLabel = widgetFactory.createMenuSettingLabel(SERVER_NAME_SETTING_LABEL_TEXT); humanPlayerLimitSettingLabel = widgetFactory.createMenuSettingLabel(HUMAN_PLAYERS_SETTING_LABEL_TEXT); aiPlayerLimitSettingLabel = widgetFactory.createMenuSettingLabel(AI_PLAYERS_SETTING_LABEL_TEXT); spectatorLimitSettingLabel = widgetFactory.createMenuSettingLabel(SPECTATORS_SETTING_SETTING_LABEL_TEXT); playMapSettingLabel = widgetFactory.createMenuSettingLabel(PLAY_MAP_SETTING_LABEL_TEXT); winPercentSettingLabel = widgetFactory.createMenuSettingLabel(WIN_PERCENT_SETTING_LABEL_TEXT); initialCountryAssignmentSettingLabel = widgetFactory .createMenuSettingLabel(INITIAL_COUNTRY_ASSIGNMENT_SETTING_LABEL_TEXT); // @formatter:on final VerticalGroup verticalGroup = new VerticalGroup(); verticalGroup.align(Align.topLeft); final Table playerSettingsTable = new Table().top().left(); playerSettingsTable.add().height(23); playerSettingsTable.row(); playerSettingsTable.add(playerSettingsSectionTitleLabel).size(540, 40).fill().padLeft(60).left(); playerSettingsTable.row(); final Table playerNameTable = new Table(); playerNameTable.add(playerNameSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); playerNameTable.add(playerNameTextField).size(270, 28).fill().left().spaceLeft(10); playerSettingsTable.add(playerNameTable).left(); playerSettingsTable.row(); final Table clanTable = new Table(); clanTable.add(clanTagSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); clanTable.add(clanAcronymCheckBox).size(20, 20).fill().left().spaceLeft(10).spaceRight(8); clanTable.add(clanAcronymTextField).size(80, 28).fill().left().spaceLeft(8); playerSettingsTable.add(clanTable).left(); verticalGroup.addActor(playerSettingsTable); final Table gameSettingsTable = new Table().top().left(); gameSettingsTable.row(); gameSettingsTable.add().height(20); gameSettingsTable.row(); gameSettingsTable.add(gameSettingsSectionTitleLabel).size(540, 40).fill().padLeft(60).left(); gameSettingsTable.row(); final Table serverNameTable = new Table(); serverNameTable.add(serverNameSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); serverNameTable.add(serverNameTextField).size(270, 28).fill().left().spaceLeft(10); gameSettingsTable.add(serverNameTable).left(); gameSettingsTable.row(); final Table playMapTable = new Table(); playMapTable.add(playMapSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); playMapTable.add(playMapNameLabel).size(238, 28).fill().left().spaceLeft(10).spaceRight(4); playMapTable.add(customizePlayMapButton).size(28, 28).fill().left().spaceLeft(4); gameSettingsTable.add(playMapTable).left(); gameSettingsTable.row(); final Table humanPlayersTable = new Table(); humanPlayersTable.add(humanPlayerLimitSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); humanPlayersTable.add(humanPlayerLimitLabel).size(76, 28).fill().left().spaceLeft(10).spaceRight(4); humanPlayersTable.add(customizeHumanPlayersButton).size(28, 28).fill().left().spaceLeft(4); gameSettingsTable.add(humanPlayersTable).left(); gameSettingsTable.row(); final Table aiPlayersTable = new Table(); aiPlayersTable.add(aiPlayerLimitSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); aiPlayersTable.add(aiPlayerLimitLabel).size(76, 28).fill().left().spaceLeft(10).spaceRight(4); aiPlayersTable.add(customizeAiPlayersButton).size(28, 28).fill().left().spaceLeft(4); gameSettingsTable.add(aiPlayersTable).left(); gameSettingsTable.row(); final Table spectatorsTable = new Table(); spectatorsTable.add(spectatorLimitSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); spectatorsTable.add(spectatorLimitSelectBox).size(108, 28).fill().left().spaceLeft(10); gameSettingsTable.add(spectatorsTable).left(); gameSettingsTable.row(); final Table winPercentTable = new Table(); winPercentTable.add(winPercentSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); winPercentTable.add(winPercentSelectBox).size(108, 28).fill().left().spaceLeft(10); gameSettingsTable.add(winPercentTable).left(); gameSettingsTable.row(); // @formatter:off final Table initialCountryAssignmentTable = new Table(); initialCountryAssignmentTable.add(initialCountryAssignmentSettingLabel).size(150, 40).fill().padLeft(90) .left().spaceRight(10); initialCountryAssignmentTable.add(initialCountryAssignmentSelectBox).size(108, 28).fill().left() .spaceLeft(10); gameSettingsTable.add(initialCountryAssignmentTable).left(); // @formatter:on verticalGroup.addActor(gameSettingsTable); addContent(verticalGroup); addBackButton(new ClickListener(Input.Buttons.LEFT) { @Override public void clicked(final InputEvent event, final float x, final float y) { contractMenuBar(new Runnable() { @Override public void run() { toScreen(ScreenId.CLASSIC_GAME_MODE_MENU); } }); } }); forwardButton = addForwardButton(FORWARD_BUTTON_TEXT, new ChangeListener() { @Override public void changed(final ChangeEvent event, final Actor actor) { if (currentPlayMap.equals(PlayMapMetadata.NULL)) { errorDialog.setMessage(new DefaultMessage("Please select a valid map before continuing.")); errorDialog.show(); return; } final String playerName = playerNameTextField.getText(); if (!GameSettings.isValidPlayerNameWithoutClanTag(playerName)) { errorDialog.setMessage(new DefaultMessage( Strings.format("Invalid player name: \'{}\'\n\nValid player name rules:\n\n{}", playerName, GameSettings.VALID_PLAYER_NAME_DESCRIPTION))); errorDialog.show(); return; } final String clanAcronym = clanAcronymTextField.getText(); if (!clanAcronymTextField.isDisabled() && !GameSettings.isValidHumanClanAcronym(clanAcronym)) { errorDialog.setMessage(new DefaultMessage( Strings.format("Invalid clan tag: \'{}\'\n\nValid clan tag rules:\n\n{}", clanAcronym, GameSettings.VALID_CLAN_ACRONYM_DESCRIPTION))); errorDialog.show(); return; } final String playerNameWithOptionalClanTag = GameSettings .getHumanPlayerNameWithOptionalClanTag(playerName, clanAcronym); final int humanPlayerLimit = getHumanPlayerLimit(); final int aiPlayerLimit = getAiPlayerLimit(); final int spectatorLimit = getSpectatorLimit(); final int winPercent = winPercentSelectBox.getSelected(); final InitialCountryAssignment initialCountryAssignment = InitialCountryAssignment .valueOf(Strings.toCase(initialCountryAssignmentSelectBox.getSelected(), LetterCase.UPPER)); final PersonLimits personLimits = PersonLimits.builder().humanPlayers(humanPlayerLimit) .aiPlayers(aiPlayerLimit).spectators(spectatorLimit).build(); final GameRules gameRules = GameRulesFactory.create(GameMode.CLASSIC, personLimits, winPercent, totalCountryCount, initialCountryAssignment); final GameConfiguration gameConfig = new DefaultGameConfiguration(GameMode.CLASSIC, currentPlayMap, gameRules); final String serverName = serverNameTextField.getText(); if (!NetworkSettings.isValidServerName(serverName)) { errorDialog.setMessage(new DefaultMessage( Strings.format("Invalid server name: \'{}\'\n\nValid server name rules:\n\n{}", serverName, NetworkSettings.VALID_SERVER_NAME_DESCRIPTION))); errorDialog.show(); return; } toScreen(ScreenId.MENU_TO_PLAY_LOADING); // The menu-to-play loading screen is now active & can therefore receive events. publishAsync(new CreateGameEvent(serverName, gameConfig, playerNameWithOptionalClanTag)); } }); }
From source file:com.forerunnergames.peril.client.ui.screens.menus.modes.classic.joingame.ClassicGameModeJoinGameMenuScreen.java
License:Open Source License
public ClassicGameModeJoinGameMenuScreen(final MenuScreenWidgetFactory widgetFactory, final ScreenChanger screenChanger, final ScreenSize screenSize, final MouseInput mouseInput, final Batch batch, final MBassador<Event> eventBus) { super(widgetFactory, screenChanger, screenSize, mouseInput, batch, eventBus); Arguments.checkIsNotNull(widgetFactory, "widgetFactory"); this.widgetFactory = widgetFactory; errorDialog = createErrorDialog();/* w w w .ja va 2s . c o m*/ addTitle("JOIN GAME", Align.bottomLeft, 40); addSubTitle("CLASSIC MODE"); playerNameTextField = widgetFactory.createPlayerNameTextField(); clanAcronymTextField = widgetFactory.createClanAcronymTextField(); serverAddressTextField = widgetFactory.createServerAddressTextField(); clanAcronymCheckBox = widgetFactory.createClanAcronymCheckBox(new ChangeListener() { @Override public void changed(final ChangeEvent event, final Actor actor) { clanAcronymTextField.setText(clanAcronymCheckBox.isChecked() ? clanAcronymTextField.getText() : ""); clanAcronymTextField.setDisabled(!clanAcronymCheckBox.isChecked()); } }); clanAcronymCheckBox.setChecked(!clanAcronymTextField.getText().isEmpty()); clanAcronymTextField.setDisabled(!clanAcronymCheckBox.isChecked()); playerSettingsSectionTitleLabel = widgetFactory.createPlayerSettingsSectionTitleLabel(); playerNameSettingLabel = widgetFactory.createPlayerNameSettingLabel(); clanTagSettingLabel = widgetFactory.createClanTagSettingLabel(); gameSettingsSectionTitleLabel = widgetFactory.createGameSettingsSectionTitleLabel(); serverAddressSettingLabel = widgetFactory.createMenuSettingLabel("Server Address"); final VerticalGroup verticalGroup = new VerticalGroup(); verticalGroup.align(Align.topLeft); // @formatter:off final Table playerSettingsTable = new Table().top().left(); playerSettingsTable.add().height(23).colspan(5); playerSettingsTable.row(); playerSettingsTable.add(playerSettingsSectionTitleLabel).size(538, 42).fill().padLeft(60).padRight(60) .left().colspan(5); playerSettingsTable.row(); playerSettingsTable.add(playerNameSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); playerSettingsTable.add(playerNameTextField).size(204, 28).fill().left().colspan(3).spaceLeft(10); playerSettingsTable.add().expandX().fill(); playerSettingsTable.row(); playerSettingsTable.add(clanTagSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); playerSettingsTable.add(clanAcronymCheckBox).size(18, 18).fill().left().spaceLeft(10).spaceRight(10); playerSettingsTable.add(clanAcronymTextField).size(74, 28).fill().left().spaceLeft(10); playerSettingsTable.add().width(102).fill(); playerSettingsTable.add().expandX().fill(); verticalGroup.addActor(playerSettingsTable); // @formatter:on // @formatter:off final Table gameSettingsTable = new Table().top().left(); gameSettingsTable.row(); gameSettingsTable.add().height(18).colspan(3); gameSettingsTable.row(); gameSettingsTable.add(gameSettingsSectionTitleLabel).size(538, 42).fill().padLeft(60).padRight(60).left() .colspan(3); gameSettingsTable.row(); gameSettingsTable.add(serverAddressSettingLabel).size(150, 40).fill().padLeft(90).left().spaceRight(10); gameSettingsTable.add(serverAddressTextField).size(204, 28).fill().left().spaceLeft(10); gameSettingsTable.add().expandX().fill(); verticalGroup.addActor(gameSettingsTable); // @formatter:on addContent(verticalGroup); addBackButton(new ClickListener(Input.Buttons.LEFT) { @Override public void clicked(final InputEvent event, final float x, final float y) { contractMenuBar(new Runnable() { @Override public void run() { toScreen(ScreenId.CLASSIC_GAME_MODE_MENU); } }); } }); forwardButton = addForwardButton("JOIN GAME", new ChangeListener() { @Override public void changed(final ChangeEvent event, final Actor actor) { final String playerName = playerNameTextField.getText(); if (!GameSettings.isValidPlayerNameWithoutClanTag(playerName)) { errorDialog.setMessage(new DefaultMessage( Strings.format("Invalid player name: \'{}\'\n\nValid player name rules:\n\n{}", playerName, GameSettings.VALID_PLAYER_NAME_DESCRIPTION))); errorDialog.show(); return; } final String clanAcronym = clanAcronymTextField.getText(); if (!clanAcronymTextField.isDisabled() && !GameSettings.isValidHumanClanAcronym(clanAcronym)) { errorDialog.setMessage(new DefaultMessage( Strings.format("Invalid clan tag: \'{}\'\n\nValid clan tag rules:\n\n{}", clanAcronym, GameSettings.VALID_CLAN_ACRONYM_DESCRIPTION))); errorDialog.show(); return; } final String playerNameWithOptionalClanTag = GameSettings .getHumanPlayerNameWithOptionalClanTag(playerName, clanAcronym); final String serverAddress = serverAddressTextField.getText(); if (!NetworkSettings.isValidServerAddress(serverAddress)) { errorDialog.setMessage(new DefaultMessage( Strings.format("Invalid server address: \'{}\'\n\nValid server address rules:\n\n{}", serverAddress, NetworkSettings.VALID_SERVER_ADDRESS_DESCRIPTION))); errorDialog.show(); return; } toScreen(ScreenId.MENU_TO_PLAY_LOADING); // The menu-to-play loading screen is now active & can therefore receive events. publishAsync(new JoinGameEvent(playerNameWithOptionalClanTag, serverAddress)); } }); }
From source file:de.bitbrain.craft.screens.IngameScreen.java
License:Open Source License
private Actor generateItemView() { VerticalGroup itemView = new VerticalGroup(); itemView.align(Align.left).fill().pad(Sizes.borderPadding()); itemList = new ItemList(itemView); return generateScrollPane(itemView); }
From source file:de.bitbrain.craft.ui.widgets.ElementWidget.java
License:Open Source License
private Actor generateRight(ElementData data) { VerticalGroup layout = new VerticalGroup(); layout.align(Align.left); layout.padLeft(15f);//from ww w .ja v a 2s. com layout.padTop(15f); name.setColor(data.getRarity().getColor()); name.setFontScale(0.85f); String textDescription = "Click to craft"; Color colorDescription = Assets.CLR_INACTIVE; if (!craftable) { textDescription = "Can not craft"; colorDescription = Color.RED; } Label description = new Label(textDescription, Styles.LBL_TEXT); description.setFontScale(0.7f); description.setColor(colorDescription); description.getColor().a = 0.5f; layout.addActor(name); VerticalGroup descContainer = new VerticalGroup(); descContainer.addActor(description); descContainer.padTop(15f); layout.addActor(descContainer); return layout; }
From source file:de.bitbrain.craft.ui.widgets.ItemWidget.java
License:Open Source License
private Actor generateRight(Item item) { VerticalGroup layout = new VerticalGroup(); layout.align(Align.left); layout.padLeft(15f);//from w w w . j a va 2 s. co m name.setColor(item.getRarity().getColor()); name.setFontScale(0.90f); layout.addActor(name); Table descContainer = new Table(); level = new StarLevelWidget(item.getLevel(), 7); availability = new AvailabilityIcon(item); descContainer.add(level); descContainer.right().add(availability).padLeft(70f).padTop(27f); layout.addActor(descContainer); layout.setTouchable(Touchable.disabled); return layout; }
From source file:gaia.cu9.ari.gaiaorbit.interfce.AboutWindow.java
License:Open Source License
public AboutWindow(Stage stg, Skin sk) { super(txt("gui.help.help") + " - " + GlobalConf.APPLICATION_NAME + " v" + GlobalConf.version.version, sk); this.stage = stg; this.skin = sk; this.me = this; this.linkStyle = skin.get("link", LabelStyle.class); float tawidth = 440 * GlobalConf.SCALE_FACTOR; float taheight = 250 * GlobalConf.SCALE_FACTOR; float taheight_s = 60 * GlobalConf.SCALE_FACTOR; float tabwidth = 60 * GlobalConf.SCALE_FACTOR; float pad = 5 * GlobalConf.SCALE_FACTOR; scrolls = new ArrayList<OwnScrollPane>(5); textareas = new ArrayList<Actor>(); /** TABLE and SCROLL **/ table = new Table(skin); // Create the tab buttons HorizontalGroup group = new HorizontalGroup(); group.align(Align.left);//from ww w. ja v a 2 s . c o m final Button tab1 = new OwnTextButton(txt("gui.help.help"), skin, "toggle-big"); tab1.pad(pad); tab1.setWidth(tabwidth); final Button tab2 = new OwnTextButton(txt("gui.help.about"), skin, "toggle-big"); tab2.pad(pad); tab2.setWidth(tabwidth); final Button tab3 = new OwnTextButton(txt("gui.help.system"), skin, "toggle-big"); tab3.pad(pad); tab3.setWidth(tabwidth); group.addActor(tab1); group.addActor(tab2); group.addActor(tab3); table.add(group).align(Align.left).padLeft(pad); table.row(); // Create the tab content. Just using images here for simplicity. Stack content = new Stack(); /** CONTENT 1 - HELP **/ final Table content1 = new Table(skin); content1.align(Align.top); Image gaiasky = new Image(getSpriteDrawable(Gdx.files.internal("img/gaiaskylogo.png"))); // User manual Label usermantitle = new OwnLabel(txt("gui.help.usermanual"), skin, "ui-12"); Label usermantxt = new OwnLabel(txt("gui.help.help1"), skin, "ui-11"); Link usermanlink = new Link(GlobalConf.WEBPAGE, linkStyle, GlobalConf.WEBPAGE); // Wiki Label wikititle = new OwnLabel("Docs", skin, "ui-12"); Label wikitxt = new OwnLabel(txt("gui.help.help2"), skin, "ui-11"); Link wikilink = new Link(GlobalConf.DOCUMENTATION, linkStyle, GlobalConf.DOCUMENTATION); // Readme Label readmetitle = new OwnLabel(txt("gui.help.readme"), skin, "ui-12"); FileHandle readmefile = Gdx.files.internal("README.md"); if (!readmefile.exists()) { readmefile = Gdx.files.internal("../README.md"); } String readmestr = readmefile.readString(); int lines = GlobalResources.countOccurrences(readmestr, '\n'); TextArea readme = new TextArea(readmestr, skin); readme.setDisabled(true); readme.setPrefRows(lines); textareas.add(readme); OwnScrollPane readmescroll = new OwnScrollPane(readme, skin, "default-nobg"); readmescroll.setWidth(tawidth); readmescroll.setHeight(taheight); readmescroll.setForceScroll(false, true); readmescroll.setSmoothScrolling(true); readmescroll.setFadeScrollBars(false); scrolls.add(readmescroll); // Add all to content content1.add(gaiasky).colspan(2); content1.row(); content1.add(usermantitle).align(Align.left).padRight(pad * 2); content1.add(usermantxt).align(Align.left); content1.row(); content1.add(new OwnLabel("", skin, "ui-11")); content1.add(usermanlink).align(Align.left); content1.row(); content1.add(wikititle).align(Align.left).padRight(pad * 2); content1.add(wikitxt).align(Align.left); content1.row(); content1.add(new OwnLabel("", skin, "ui-11")); content1.add(wikilink).align(Align.left); content1.row(); content1.add(readmetitle).colspan(2).align(Align.left); content1.row(); content1.add(readmescroll).colspan(2).expand().pad(pad * 2, 0, pad * 2, 0).align(Align.center); /** CONTENT 2 - ABOUT **/ final Table content2 = new Table(skin); content2.align(Align.top); // Intro TextArea intro = new OwnTextArea(txt("gui.help.gscredits", GlobalConf.version.version), skin.get("msg-11", TextFieldStyle.class)); intro.setDisabled(true); intro.setPrefRows(3); intro.setWidth(tawidth); textareas.add(intro); // Home page Label homepagetitle = new OwnLabel(txt("gui.help.homepage"), skin, "ui-12"); Link homepage = new Link(GlobalConf.WEBPAGE, linkStyle, GlobalConf.WEBPAGE); // Author Label authortitle = new OwnLabel(txt("gui.help.author"), skin, "ui-12"); VerticalGroup author = new VerticalGroup(); author.align(Align.left); Label authorname = new OwnLabel("Toni Sagrist Sells", skin, "ui-11"); Link authormail = new Link("tsagrista@ari.uni-heidelberg.de", linkStyle, "mailto:tsagrista@ari.uni-heidelberg.de"); Link authorpage = new Link("www.tonisagrista.com", linkStyle, "http://tonisagrista.com"); author.addActor(authorname); author.addActor(authormail); author.addActor(authorpage); // Contributor Label contribtitle = new OwnLabel(txt("gui.help.contributors"), skin, "ui-12"); VerticalGroup contrib = new VerticalGroup(); contrib.align(Align.left); Label contribname = new OwnLabel("Apl. Prof. Dr. Stefan Jordan", skin, "ui-11"); Link contribmail = new Link("jordan@ari.uni-heidelberg.de", linkStyle, "mailto:jordan@ari.uni-heidelberg.de"); contrib.addActor(contribname); contrib.addActor(contribmail); // License HorizontalGroup licenseh = new HorizontalGroup(); licenseh.space(pad * 2); Image license = new Image(getSpriteDrawable(Gdx.files.internal("img/license.png"))); VerticalGroup licensev = new VerticalGroup(); TextArea licensetext = new OwnTextArea(txt("gui.help.license"), skin.get("msg-11", TextFieldStyle.class)); licensetext.setDisabled(true); licensetext.setPrefRows(3); licensetext.setWidth(tawidth / 2f); Link licenselink = new Link("https://www.gnu.org/licenses/gpl.html", linkStyle, "https://www.gnu.org/licenses/gpl.html"); licensev.addActor(licensetext); licensev.addActor(licenselink); licenseh.addActor(license); licenseh.addActor(licensev); // Thanks HorizontalGroup thanks = new HorizontalGroup(); thanks.space(pad * 2); Container thanksc = new Container(thanks); thanksc.setBackground(skin.getDrawable("bg-clear")); Image zah = new Image(getSpriteDrawable(Gdx.files.internal("img/zah.png"))); Image dlr = new Image(getSpriteDrawable(Gdx.files.internal("img/dlr.png"))); Image bwt = new Image(getSpriteDrawable(Gdx.files.internal("img/bwt.png"))); Image dpac = new Image(getSpriteDrawable(Gdx.files.internal("img/dpac.png"))); thanks.addActor(zah); thanks.addActor(dlr); thanks.addActor(bwt); thanks.addActor(dpac); content2.add(intro).colspan(2).align(Align.left).padTop(pad * 2); content2.row(); content2.add(homepagetitle).align(Align.topLeft).padRight(pad * 2); content2.add(homepage).align(Align.left); content2.row(); content2.add(authortitle).align(Align.topLeft).padRight(pad * 2).padTop(pad); content2.add(author).align(Align.left).padTop(pad); content2.row(); content2.add(contribtitle).align(Align.topLeft).padRight(pad * 2).padTop(pad); content2.add(contrib).align(Align.left).padTop(pad); content2.row(); content2.add(licenseh).colspan(2).align(Align.center).padTop(pad * 4); content2.row(); content2.add(thanksc).colspan(2).align(Align.center).padTop(pad * 8); /** CONTENT 3 - SYSTEM **/ final Table content3 = new Table(skin); content3.align(Align.top); // Build info Label buildinfo = new OwnLabel(txt("gui.help.buildinfo"), skin, "help-title"); Label versiontitle = new OwnLabel(txt("gui.help.version", GlobalConf.APPLICATION_NAME), skin, "ui-12"); Label version = new OwnLabel(GlobalConf.version.version, skin, "ui-11"); Label revisiontitle = new OwnLabel(txt("gui.help.buildnumber"), skin, "ui-12"); Label revision = new OwnLabel(GlobalConf.version.build, skin, "ui-11"); Label timetitle = new OwnLabel(txt("gui.help.buildtime"), skin, "ui-12"); Label time = new OwnLabel(GlobalConf.version.buildtime, skin, "ui-11"); Label systemtitle = new OwnLabel(txt("gui.help.buildsys"), skin, "ui-12"); TextArea system = new OwnTextArea(GlobalConf.version.system, skin.get("msg-11", TextFieldStyle.class)); system.setDisabled(true); system.setPrefRows(3); system.setWidth(tawidth * 2f / 3f); textareas.add(system); Label buildertitle = new OwnLabel(txt("gui.help.builder"), skin, "ui-12"); Label builder = new OwnLabel(GlobalConf.version.builder, skin, "ui-11"); // Java info Label javainfo = new OwnLabel(txt("gui.help.javainfo"), skin, "help-title"); Label javaversiontitle = new OwnLabel(txt("gui.help.javaversion"), skin, "ui-12"); Label javaversion = new OwnLabel(System.getProperty("java.version"), skin, "ui-11"); Label javaruntimetitle = new OwnLabel(txt("gui.help.javaname"), skin, "ui-12"); Label javaruntime = new OwnLabel(System.getProperty("java.runtime.name"), skin, "ui-11"); Label javavmnametitle = new OwnLabel(txt("gui.help.javavmname"), skin, "ui-12"); Label javavmname = new OwnLabel(System.getProperty("java.vm.name"), skin, "ui-11"); Label javavmversiontitle = new OwnLabel(txt("gui.help.javavmversion"), skin, "ui-12"); Label javavmversion = new OwnLabel(System.getProperty("java.vm.version"), skin, "ui-11"); Label javavmvendortitle = new OwnLabel(txt("gui.help.javavmvendor"), skin, "ui-12"); Label javavmvendor = new OwnLabel(System.getProperty("java.vm.vendor"), skin, "ui-11"); TextButton memoryinfobutton = new OwnTextButton(txt("gui.help.meminfo"), skin, "default"); memoryinfobutton.setName("memoryinfo"); memoryinfobutton.setSize(150 * GlobalConf.SCALE_FACTOR, 20 * GlobalConf.SCALE_FACTOR); memoryinfobutton.addListener(new EventListener() { @Override public boolean handle(Event event) { if (event instanceof ChangeEvent) { EventManager.instance.post(Events.DISPLAY_MEM_INFO_WINDOW, stage, skin); return true; } return false; } }); // OpenGL info Label glinfo = new OwnLabel(txt("gui.help.openglinfo"), skin, "help-title"); Label glversiontitle = new OwnLabel(txt("gui.help.openglversion"), skin, "ui-12"); Label glversion = new OwnLabel(Gdx.gl.glGetString(GL20.GL_VERSION), skin, "ui-11"); Label glslversiontitle = new OwnLabel(txt("gui.help.glslversion"), skin, "ui-12"); Label glslversion = new OwnLabel(Gdx.gl.glGetString(GL20.GL_SHADING_LANGUAGE_VERSION), skin, "ui-11"); Label glextensionstitle = new OwnLabel(txt("gui.help.glextensions"), skin, "ui-12"); String glextensionsstr = Gdx.gl.glGetString(GL20.GL_EXTENSIONS).replace(' ', '\r'); lines = GlobalResources.countOccurrences(glextensionsstr, '\r') + 1; IntBuffer buf = BufferUtils.newIntBuffer(16); Gdx.gl.glGetIntegerv(Gdx.graphics.getGL20().GL_MAX_TEXTURE_SIZE, buf); int maxSize = buf.get(0); TextArea glextensions = new TextArea("Max texture size: " + maxSize + "\r" + glextensionsstr, skin); glextensions.setDisabled(true); glextensions.setPrefRows(lines); textareas.add(glextensions); OwnScrollPane glextensionsscroll = new OwnScrollPane(glextensions, skin, "default-nobg"); glextensionsscroll.setWidth(tawidth / 1.7f); glextensionsscroll.setHeight(taheight_s); glextensionsscroll.setForceScroll(false, true); glextensionsscroll.setSmoothScrolling(true); glextensionsscroll.setFadeScrollBars(false); scrolls.add(glextensionsscroll); content3.add(buildinfo).colspan(2).align(Align.left).padTop(pad * 3); content3.row(); content3.add(versiontitle).align(Align.topLeft).padRight(pad * 2); content3.add(version).align(Align.left); content3.row(); content3.add(revisiontitle).align(Align.topLeft).padRight(pad * 2); content3.add(revision).align(Align.left); content3.row(); content3.add(timetitle).align(Align.topLeft).padRight(pad * 2); content3.add(time).align(Align.left); content3.row(); content3.add(buildertitle).align(Align.topLeft).padRight(pad * 2); content3.add(builder).align(Align.left).padBottom(pad * 3); content3.row(); content3.add(systemtitle).align(Align.topLeft).padRight(pad * 2); content3.add(system).align(Align.left); content3.row(); content3.add(javainfo).colspan(2).align(Align.left).padTop(pad * 2); content3.row(); content3.add(javaversiontitle).align(Align.topLeft).padRight(pad * 2); content3.add(javaversion).align(Align.left); content3.row(); content3.add(javaruntimetitle).align(Align.topLeft).padRight(pad * 2); content3.add(javaruntime).align(Align.left); content3.row(); content3.add(javavmnametitle).align(Align.topLeft).padRight(pad * 2); content3.add(javavmname).align(Align.left); content3.row(); content3.add(javavmversiontitle).align(Align.topLeft).padRight(pad * 2); content3.add(javavmversion).align(Align.left); content3.row(); content3.add(javavmvendortitle).align(Align.topLeft).padRight(pad * 2); content3.add(javavmvendor).align(Align.left).padBottom(pad * 2); content3.row(); content3.add(memoryinfobutton).colspan(2).align(Align.left).padBottom(pad * 3); content3.row(); content3.add(glinfo).colspan(2).align(Align.left).padTop(pad * 2); content3.row(); content3.add(glversiontitle).align(Align.topLeft).padRight(pad * 2); content3.add(glversion).align(Align.left); content3.row(); content3.add(glslversiontitle).align(Align.topLeft).padRight(pad * 2); content3.add(glslversion).align(Align.left); content3.row(); content3.add(glextensionstitle).align(Align.topLeft).padRight(pad * 2); content3.add(glextensionsscroll).align(Align.left); /** ADD ALL CONTENT **/ content.addActor(content1); content.addActor(content2); content.addActor(content3); table.add(content).expand().fill(); // Listen to changes in the tab button checked states // Set visibility of the tab content to match the checked state ChangeListener tab_listener = new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { content1.setVisible(tab1.isChecked()); content2.setVisible(tab2.isChecked()); content3.setVisible(tab3.isChecked()); } }; tab1.addListener(tab_listener); tab2.addListener(tab_listener); tab3.addListener(tab_listener); // Let only one tab button be checked at a time ButtonGroup tabs = new ButtonGroup(); tabs.setMinCheckCount(1); tabs.setMaxCheckCount(1); tabs.add(tab1); tabs.add(tab2); tabs.add(tab3); /** BUTTONS **/ HorizontalGroup buttonGroup = new HorizontalGroup(); TextButton close = new OwnTextButton(txt("gui.close"), skin, "default"); close.setName("close"); close.setSize(70 * GlobalConf.SCALE_FACTOR, 20 * GlobalConf.SCALE_FACTOR); close.addListener(new EventListener() { @Override public boolean handle(Event event) { if (event instanceof ChangeEvent) { me.hide(); return true; } return false; } }); buttonGroup.addActor(close); add(table).pad(pad); row(); add(buttonGroup).pad(pad).bottom().right(); getTitleTable().align(Align.left); pack(); this.setPosition(Math.round(stage.getWidth() / 2f - this.getWidth() / 2f), Math.round(stage.getHeight() / 2f - this.getHeight() / 2f)); /** CAPTURE SCROLL FOCUS **/ stage.addListener(new EventListener() { @Override public boolean handle(Event event) { if (event instanceof InputEvent) { InputEvent ie = (InputEvent) event; if (ie.getType() == Type.mouseMoved) { for (OwnScrollPane scroll : scrolls) { if (ie.getTarget().isDescendantOf(scroll)) { stage.setScrollFocus(scroll); } } return true; } } return false; } }); }