package com.fr.design.style.background; import com.fr.base.background.ColorBackground; import com.fr.base.background.GradientBackground; import com.fr.base.background.ImageFileBackground; import com.fr.design.layout.FRGUIPaneFactory; import com.fr.design.style.background.gradient.GradientBackgroundPane; import com.fr.design.style.background.impl.ColorBackgroundPane; import com.fr.design.style.background.impl.ImageBackgroundPane; import com.fr.design.style.background.impl.NullBackgroundPane; import com.fr.general.Background; import java.util.LinkedHashMap; import java.util.Map; /** * @author kerry * @date 2018/1/29 */ public class BackgroundCardSwitchButtonPane extends BackgroundButtonPane { private static Map, BackgroundUIWrapper> cardSwitchButton = new LinkedHashMap<>(); static { registerCardSwitchBtnBackground(cardSwitchButton); } private static void registerCardSwitchBtnBackground(Map, BackgroundUIWrapper> map) { map.put(ColorBackground.class, BackgroundUIWrapper.create() .setType(ColorBackgroundPane.class).setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Background_Color"))); map.put(ImageFileBackground.class, BackgroundUIWrapper.create() .setType(ImageBackgroundPane.class).setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Background_Image"))); map.put(GradientBackground.class, BackgroundUIWrapper.create() .setType(GradientBackgroundPane.class).setTitle(com.fr.design.i18n.Toolkit.i18nText("Fine-Design_Basic_Background_Gradient_Color"))); } public BackgroundCardSwitchButtonPane() { super(); } @Override protected void initTabPane() { int index = 0; for (Class key : cardSwitchButton.keySet()) { BackgroundUIWrapper wrapper = cardSwitchButton.get(key); wrapper.setIndex(index++); tabbedPane.addTab(com.fr.design.i18n.Toolkit.i18nText(wrapper.getTitle()), FRGUIPaneFactory.createY_AXISBoxInnerContainer_L_Pane()); } } @Override protected BackgroundUIWrapper getBackgroundUIWrapper(Background background) { return cardSwitchButton.get(background == null ? null : background.getClass()); } @Override protected BackgroundDetailPane getTabItemPane(Background background, int index) { BackgroundDetailPane quickPane = cacheMap.get(index); if (quickPane == null) { BackgroundUIWrapper uiWrapper = getBackgroundUIWrapper(background); quickPane = BackgroundFactory.createByWrapper(uiWrapper); quickPane.addChangeListener(backgroundChangeListener); cacheMap.put(index, quickPane); } tabbedPane.setComponentAt(index, quickPane); tabbedPane.setSelectedIndex(index); return quickPane; } @Override protected BackgroundDetailPane getTabItemPaneByIndex(int index) { BackgroundDetailPane quickPane = cacheMap.get(index); if (quickPane == null) { quickPane = createDetailPaneByIndex(index); tabbedPane.setComponentAt(index, quickPane); cacheMap.put(index, quickPane); quickPane.addChangeListener(backgroundChangeListener); } return quickPane; } public BackgroundDetailPane createDetailPaneByIndex(int index) { for (BackgroundUIWrapper wrapper : cardSwitchButton.values()) { if (wrapper.getIndex() == index) { return BackgroundFactory.createByWrapper(wrapper); } } return new NullBackgroundPane(); } }