/* * ARX: Powerful Data Anonymization * Copyright 2012 - 2017 Fabian Prasser, Florian Kohlmayer and contributors * * 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 org.deidentifier.arx.gui.view.impl.common; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.deidentifier.arx.gui.view.def.IComponent; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; /** * A basic title bar, which offers some buttons. * * @author Fabian Prasser */ public class ComponentTitledFolderButtonBar implements IComponent{ /** View */ private List<String> titles = new ArrayList<String>(); /** View */ private Map<String, Image> images = new HashMap<String, Image>(); /** View */ private Map<String, Boolean> toggle = new HashMap<String, Boolean>(); /** View */ private Map<String, Runnable> runnables = new HashMap<String, Runnable>(); /** View */ private String id; /** View */ private final Map<Composite, String> helpids; /** * Creates a new instance. * * @param id */ public ComponentTitledFolderButtonBar(String id) { this.id = id; this.helpids = null; } /** * Creates a new instance. * * @param id * @param helpids */ public ComponentTitledFolderButtonBar(String id, Map<Composite, String> helpids) { this.id = id; this.helpids = helpids; } /** * Adds a button. * * @param title * @param image * @param toggle * @param runnable */ public void add(String title, Image image, boolean toggle, Runnable runnable) { this.titles.add(title); this.toggle.put(title, toggle); this.images.put(title, image); this.runnables.put(title, runnable); } /** * Adds a new button. * * @param title * @param image * @param runnable */ public void add(String title, Image image, Runnable runnable){ add(title, image, false, runnable); } /** * Returns the id. * * @return */ public String getHelpId(){ return id; } /** * Returns the help ids for each composite * * @return */ public Map<Composite, String> getHelpIds(){ return helpids; } /** * Returns the image for the given button. * * @param title * @return */ public Image getImage(String title) { return images.get(title); } /** * Returns the runnable for the given button. * * @param title * @return */ public Runnable getRunnable(String title) { return runnables.get(title); } /** * Returns the titles of all buttons. * * @return */ public List<String> getTitles() { return titles; } /** * Returns whether the given button is a toggle button. * * @param title * @return */ public Boolean isToggle(String title) { return toggle.get(title); } }