/******************************************************************************* * 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.Actor; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputListener; import com.badlogic.gdx.scenes.scene2d.ui.Container; import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane; import com.badlogic.gdx.scenes.scene2d.ui.Skin; import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; import com.badlogic.gdx.utils.Array; public abstract class EditList<T> extends Table { protected EditToolbar toolbar; protected CustomList<T> list; protected Skin skin; protected Container<ScrollPane> container; public EditList(Skin skin) { super(skin); this.skin = skin; list = new CustomList<T>(skin); Array<T> items = new Array<T>(); list.setItems(items); ScrollPane scrollPane = new ScrollPane(list, skin); container = new Container<ScrollPane>(scrollPane); container.fill(); container.prefHeight(1000); scrollPane.setFadeScrollBars(false); toolbar = new EditToolbar(skin); // debug(); add(toolbar).expandX().fillX(); row(); add(container).expand().fill(); toolbar.addCreateListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { create(); } }); toolbar.addEditListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { edit(); } }); toolbar.addDeleteListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { delete(); } }); toolbar.addCopyListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { copy(); } }); toolbar.addPasteListener(new ChangeListener() { @Override public void changed(ChangeEvent event, Actor actor) { paste(); } }); list.addListener(new InputListener() { @Override public void enter(InputEvent event, float x, float y, int pointer, com.badlogic.gdx.scenes.scene2d.Actor fromActor) { // EditorLogger.debug("ENTER - X: " + x + " Y: " + y); getStage().setScrollFocus(list); } }); } public void setCellRenderer(CellRenderer<T> r) { list.setCellRenderer(r); } public Array<T> getItems () { return list.getItems(); } public void addItem(T item) { list.getItems().add(item); } public void clear() { list.getItems().clear(); } abstract protected void create(); abstract protected void edit(); abstract protected void delete(); abstract protected void copy(); abstract protected void paste(); }