package com.uwsoft.editor.view.ui.dialog; import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; import com.badlogic.gdx.utils.Align; import com.commons.UIDraggablePanel; import com.kotcrab.vis.ui.widget.*; import com.uwsoft.editor.Overlap2DFacade; import com.uwsoft.editor.utils.StandardWidgetsFactory; import java.util.HashSet; import java.util.Set; /** * Created by azakhary on 8/1/2015. */ public class TagsDialog extends UIDraggablePanel { public static final String prefix = "com.uwsoft.editor.view.ui.dialog.panels.TagsDialog"; public static final String LIST_CHANGED = prefix + ".LIST_CHANGED"; private Overlap2DFacade facade; private VisTable mainTable; private VisTable tagTable; private TagItem.TagItemListener tagItemListener; private Set<String> tags = new HashSet<>(); public TagsDialog() { super("Tags"); addCloseButton(); facade = Overlap2DFacade.getInstance(); mainTable = new VisTable(); add(mainTable).padBottom(4); tagItemListener = new TagItem.TagItemListener() { @Override public void removed(String tag) { tags.remove(tag); facade.sendNotification(LIST_CHANGED); } }; } public void setEmpty() { mainTable.clear(); VisLabel label = StandardWidgetsFactory.createLabel("No item selected"); label.setAlignment(Align.center); mainTable.add(label).pad(10).width(278).center(); invalidateHeight(); } private void addTag(String tag) { tags.add(tag); } public void setTags(Set<String> tags) { this.tags = tags; } public void updateView() { mainTable.clear(); tagTable = new VisTable(); VisTable inputTable = new VisTable(); for(String tag: tags) { tagTable.add(new TagItem(tag, tagItemListener)).pad(5).left().expandX().fillX(); tagTable.row(); } VisTextField newTagField = StandardWidgetsFactory.createTextField(); VisTextButton createTagBtn = new VisTextButton("add"); inputTable.add(newTagField).width(200); inputTable.add(createTagBtn).padLeft(5); createTagBtn.addListener(new ClickListener() { @Override public void clicked (InputEvent event, float x, float y) { String tag = newTagField.getText(); if(!tagExists(tag)) { newTagField.setText(""); addTag(tag); facade.sendNotification(LIST_CHANGED); } } }); mainTable.add(tagTable).expandX().fillX(); mainTable.row(); mainTable.add(inputTable); invalidateHeight(); } public Set<String> getTags() { return tags; } private boolean tagExists(String tag) { return tags.contains(tag); } }