/* * This file is part of the Illarion project. * * Copyright © 2015 - Illarion e.V. * * Illarion is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Illarion is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ package illarion.mapedit.gui.menubands; import illarion.mapedit.Lang; import illarion.mapedit.events.map.RepaintRequestEvent; import illarion.mapedit.render.*; import javolution.util.FastTable; import org.bushe.swing.event.EventBus; import org.pushingpixels.flamingo.api.common.JCommandToggleButton; import org.pushingpixels.flamingo.api.ribbon.JRibbonBand; import org.pushingpixels.flamingo.api.ribbon.resize.CoreRibbonResizePolicies.High2Low; import org.pushingpixels.flamingo.api.ribbon.resize.CoreRibbonResizePolicies.Mid2Low; import org.pushingpixels.flamingo.api.ribbon.resize.CoreRibbonResizePolicies.Mirror; import org.pushingpixels.flamingo.api.ribbon.resize.RibbonBandResizePolicy; import javax.annotation.Nonnull; import java.util.List; /** * @author Tim */ public class ViewBand extends JRibbonBand { public ViewBand(@Nonnull RendererManager manager) { super(Lang.getMsg("gui.viewband.Name"), null); TileRenderer tileRenderer = new TileRenderer(manager); manager.addRenderer(new SelectedTileRenderer(manager)); newRenderButton(manager, tileRenderer); newRenderButton(manager, new ItemRenderer(manager)); renderEmptyTilesButton(tileRenderer); newRenderButton(manager, new GridRenderer(manager)); newRenderButton(manager, new MusicRenderer(manager)); newRenderButton(manager, new WarpRenderer(manager)); newRenderButton(manager, new ItemDataRenderer(manager)); newRenderButton(manager, new AnnotationRenderer(manager)); newRenderButton(manager, new ObstacleRenderer(manager)); List<RibbonBandResizePolicy> resize = new FastTable<>(); resize.add(new Mirror(getControlPanel())); resize.add(new Mid2Low(getControlPanel())); resize.add(new High2Low(getControlPanel())); setResizePolicies(resize); } private void newRenderButton(@Nonnull RendererManager manager, @Nonnull AbstractMapRenderer renderer) { JCommandToggleButton btn = new JCommandToggleButton(renderer.getLocalizedName(), renderer.getRendererIcon()); btn.getActionModel().setSelected(renderer.isDefaultOn()); btn.addActionListener(e -> { if (btn.getActionModel().isSelected()) { manager.addRenderer(renderer); } else { manager.removeRenderer(renderer); } }); if (renderer.isDefaultOn()) { manager.addRenderer(renderer); } addCommandButton(btn, renderer.getPriority()); } private void renderEmptyTilesButton(@Nonnull TileRenderer renderer) { JCommandToggleButton btn = new JCommandToggleButton(renderer.getEmptyTileLocalizedName(), renderer.getEmptyTileRendererIcon()); btn.getActionModel().setSelected(renderer.isEmptyTileDefaultOn()); btn.addActionListener(e -> { renderer.setRenderEmptyTiles(btn.getActionModel().isSelected()); EventBus.publish(new RepaintRequestEvent()); }); if (renderer.isEmptyTileDefaultOn()) { renderer.setRenderEmptyTiles(true); } addCommandButton(btn, renderer.getEmptyTilePriority()); } }