/******************************************************************************* * Copyright 2014 Rafael Garcia Moreno. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package com.bladecoder.engineeditor.ui.panels; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.ui.ButtonGroup; import com.badlogic.gdx.scenes.scene2d.ui.HorizontalGroup; import com.badlogic.gdx.scenes.scene2d.ui.Label; import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.utils.Align; import com.badlogic.gdx.utils.Array; abstract public class ScopePanel extends Table { public static String WORLD_SCOPE = "World"; public static String SCENE_SCOPE = "Scene"; public static String ACTOR_SCOPE = "Actor"; private ButtonGroup<TextButton> buttonGroup; private HorizontalGroup hPanel; private Skin skin; public ScopePanel(Skin skin) { super(skin); this.skin = skin; buttonGroup = new ButtonGroup<TextButton>(); hPanel = new HorizontalGroup(); hPanel.wrap(true); hPanel.rowAlign(Align.left); buttonGroup.setMaxCheckCount(1); buttonGroup.setMinCheckCount(1); buttonGroup.setUncheckLast(true); hPanel.addActor(new Label("Scope: ", skin)); addButton(WORLD_SCOPE); addButton(SCENE_SCOPE); addButton(ACTOR_SCOPE); add(hPanel).expandX().fillX().center(); buttonGroup.getButtons().get(2).setChecked(true); } private void addButton(String name) { TextButton button = new TextButton(name, skin); buttonGroup.add(button); hPanel.addActor(button); button.addListener(new ClickListener() { @Override public void clicked (InputEvent event, float x, float y) { changeScope((TextButton)event.getListenerActor()); } }); } public int getSelectedIndex() { for(int i=0; i < buttonGroup.getButtons().size; i++) { if(buttonGroup.getButtons().get(i) == buttonGroup.getChecked()) return i; } return -1; } public void changeScope(TextButton b) { b.setChecked(true); scopeChanged(b.getText().toString()); } abstract public void scopeChanged(String scope); public String getScope() { return buttonGroup.getChecked().getText().toString(); } public void clear() { Array<TextButton> buttons = buttonGroup.getButtons(); buttons.clear(); hPanel.clear(); } }