|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package com.fr.design.mainframe.guide.creator.theme; |
|
|
|
|
|
|
|
|
|
import com.fr.base.theme.FormTheme; |
|
|
|
|
import com.fr.base.theme.FormThemeConfig; |
|
|
|
|
import com.fr.base.theme.TemplateTheme; |
|
|
|
|
import com.fr.design.file.HistoryTemplateListCache; |
|
|
|
@ -12,6 +13,7 @@ import com.fr.design.mainframe.guide.GuideIds;
|
|
|
|
|
import com.fr.design.mainframe.guide.base.Guide; |
|
|
|
|
import com.fr.design.mainframe.guide.base.GuideBuilder; |
|
|
|
|
import com.fr.design.mainframe.guide.base.GuideLifecycleAdaptor; |
|
|
|
|
import com.fr.design.mainframe.guide.base.GuideManager; |
|
|
|
|
import com.fr.design.mainframe.guide.creator.GuideCreateUtils; |
|
|
|
|
import com.fr.design.mainframe.guide.creator.GuideSceneHelper; |
|
|
|
|
import com.fr.design.mainframe.guide.scene.ClickScene; |
|
|
|
@ -20,6 +22,7 @@ import com.fr.design.mainframe.guide.scene.GuideScene;
|
|
|
|
|
import com.fr.design.mainframe.guide.scene.GuideSceneLifecycleAdaptor; |
|
|
|
|
import com.fr.design.mainframe.guide.tip.BubbleTip; |
|
|
|
|
import com.fr.design.mainframe.guide.tip.GuideTip; |
|
|
|
|
import com.fr.design.mainframe.theme.AsyncThemeFetcher; |
|
|
|
|
import com.fr.design.mainframe.theme.TemplateThemeBlock; |
|
|
|
|
import com.fr.design.mainframe.theme.TemplateThemeGridPagesPane; |
|
|
|
|
import com.fr.design.mainframe.theme.dialog.TemplateThemeUsingDialog; |
|
|
|
@ -27,12 +30,17 @@ import com.fr.design.utils.ComponentUtils;
|
|
|
|
|
|
|
|
|
|
import javax.swing.SwingUtilities; |
|
|
|
|
import java.awt.Component; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.TimerTask; |
|
|
|
|
|
|
|
|
|
public class ThemeToggleGuide { |
|
|
|
|
private static final int PAGE_THEME_COUNT = 9; |
|
|
|
|
private static final int DEFAULT_THEME_INDEX = 4; |
|
|
|
|
private static TemplateThemeUsingDialog themeDialog; |
|
|
|
|
private static String TARGET_XCREATOR_NAME = "chart00"; |
|
|
|
|
private static String filePath; |
|
|
|
|
private static int themeLoadCount; |
|
|
|
|
private static int selectedThemeIndex; |
|
|
|
|
|
|
|
|
|
public static Guide createGuide() { |
|
|
|
|
GuideScene scene1 = createScene1(); |
|
|
|
@ -55,15 +63,38 @@ public class ThemeToggleGuide {
|
|
|
|
|
.registerLifecycle(new GuideLifecycleAdaptor() { |
|
|
|
|
@Override |
|
|
|
|
public boolean prepared() { |
|
|
|
|
filePath = GuideCreateUtils.openGuideFile("/com/fr/report/guide/template", "toggle_theme", ".frm"); |
|
|
|
|
EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS); |
|
|
|
|
return true; |
|
|
|
|
List<String> themeNames = FormThemeConfig.getInstance().getThemeNames(); |
|
|
|
|
themeLoadCount = Math.min(themeNames.size(), PAGE_THEME_COUNT); |
|
|
|
|
if (themeLoadCount == 0) { |
|
|
|
|
GuideManager.getInstance().getCurrentGuide().terminate(); |
|
|
|
|
} |
|
|
|
|
selectedThemeIndex = Math.min(themeLoadCount - 1, DEFAULT_THEME_INDEX); |
|
|
|
|
int lazyCount = themeLoadCount; |
|
|
|
|
AsyncThemeFetcher asyncThemeFetcher = new AsyncThemeFetcher<>(PAGE_THEME_COUNT, FormThemeConfig.getInstance()); |
|
|
|
|
for (int index = 0; index < lazyCount; index++) { |
|
|
|
|
asyncThemeFetcher.submit(themeNames.get(index), new AsyncThemeFetcher.AsyncThemeFetchCallbackAdapter<FormTheme>(){ |
|
|
|
|
@Override |
|
|
|
|
public void afterCachedFetch(FormTheme theme) { |
|
|
|
|
themeLoadCount--; |
|
|
|
|
if (themeLoadCount == 0) { |
|
|
|
|
filePath = GuideCreateUtils.openGuideFile("/com/fr/report/guide/template", "toggle_theme", ".frm"); |
|
|
|
|
EastRegionContainerPane.getInstance().switchTabTo(EastRegionContainerPane.KEY_WIDGET_SETTINGS); |
|
|
|
|
asyncThemeFetcher.shutdown(); |
|
|
|
|
GuideManager.getInstance().getCurrentGuide().start(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void onEnd() { |
|
|
|
|
closeTemplateThemeUsingDialog(); |
|
|
|
|
GuideCreateUtils.deleteGuideFile(filePath); |
|
|
|
|
filePath = null; |
|
|
|
|
themeLoadCount = 0; |
|
|
|
|
selectedThemeIndex = 0; |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.getGuide(); |
|
|
|
@ -118,7 +149,7 @@ public class ThemeToggleGuide {
|
|
|
|
|
scene.registerLifecycle(new GuideSceneLifecycleAdaptor() { |
|
|
|
|
@Override |
|
|
|
|
public boolean prepared() { |
|
|
|
|
String name = FormThemeConfig.getInstance().getThemeNames().get(4); |
|
|
|
|
String name = FormThemeConfig.getInstance().getThemeNames().get(selectedThemeIndex); |
|
|
|
|
Component component = ComponentUtils.findComponentByName(themeDialog.getContentPane(), name); |
|
|
|
|
if (component instanceof TemplateThemeBlock) { |
|
|
|
|
scene.addClickTarget(component, ClickScene.ClickType.LEFT, true); |
|
|
|
|