/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 ro.nextreports.designer; import java.awt.Component; import java.io.File; import java.io.IOException; import org.noos.xing.mydoggy.DockedTypeDescriptor; import org.noos.xing.mydoggy.ToolWindow; import org.noos.xing.mydoggy.ToolWindowAction; import org.noos.xing.mydoggy.ToolWindowAnchor; import org.noos.xing.mydoggy.ToolWindowManager; import org.noos.xing.mydoggy.ToolWindowType; import ro.nextreports.designer.ui.tail.LogPanel; import ro.nextreports.designer.util.I18NSupport; import ro.nextreports.designer.util.ImageUtil; import ro.nextreports.engine.util.StringUtil; /** * @author Decebal Suiu */ public class WorkspaceManager { public static final String QUERY_WORKSPACE_FILE = Globals.USER_DATA_DIR + "/" + "query-workspace.xml"; public static final String REPORT_WORKSPACE_FILE = Globals.USER_DATA_DIR + "/" + "report-workspace.xml"; public static final String CHART_WORKSPACE_FILE = Globals.USER_DATA_DIR + "/" + "chart-workspace.xml"; public static final String QUERY_WORKSPACE = "query"; public static final String REPORT_WORKSPACE = "report"; public static final String CHART_WORKSPACE = "chart"; public static final String QUERY_CONTENT = "qbMain"; public static String QUERY_EXPLORER = I18NSupport.getString("query.explorer"); public static String QUERY_PARAMETERS = I18NSupport.getString("query.parameters"); public static final String QUERY_SQL_LOG = "Sql Log"; public static final String REPORT_CONTENT = "rdMain"; public static String REPORT_STRUCTURE = I18NSupport.getString("report.structure"); public static String REPORT_PROPERTIES = I18NSupport.getString("report.properties"); public static final String CHART_CONTENT = "cdMain"; public static String CHART_PROPERTIES = I18NSupport.getString("chart.properties"); private static WorkspaceManager instance; private Workspace queryWorkspace; private Workspace reportWorkspace; private Workspace chartWorkspace; private String currentWorkspace; public static WorkspaceManager getInstance() { if (instance == null) { instance = new WorkspaceManager(); } return instance; } public void clear() { instance = null; String oldExplorer = QUERY_EXPLORER; String oldParameters = QUERY_PARAMETERS; String oldStructure = REPORT_STRUCTURE; String oldProperties = REPORT_PROPERTIES; String oldChartProperties = CHART_PROPERTIES; QUERY_EXPLORER = I18NSupport.getString("query.explorer"); QUERY_PARAMETERS = I18NSupport.getString("query.parameters"); REPORT_STRUCTURE = I18NSupport.getString("report.structure"); REPORT_PROPERTIES = I18NSupport.getString("report.properties"); CHART_PROPERTIES = I18NSupport.getString("chart.properties"); StringUtil.replaceInFile(new File(QUERY_WORKSPACE_FILE), oldExplorer, QUERY_EXPLORER); StringUtil.replaceInFile(new File(QUERY_WORKSPACE_FILE), oldParameters, QUERY_PARAMETERS); StringUtil.replaceInFile(new File(REPORT_WORKSPACE_FILE), oldStructure, REPORT_STRUCTURE); StringUtil.replaceInFile(new File(REPORT_WORKSPACE_FILE), oldProperties, REPORT_PROPERTIES); StringUtil.replaceInFile(new File(CHART_WORKSPACE_FILE), oldChartProperties, CHART_PROPERTIES); } private WorkspaceManager() { createQueryWorkspace(); createReportWorkspace(); createChartWorkspace(); } public Workspace getQueryWorkspace() { return queryWorkspace; } public Workspace getReportWorkspace() { return reportWorkspace; } public Workspace getChartWorkspace() { return chartWorkspace; } public void setCurrentWorkspace(String workspaceName) { if (QUERY_WORKSPACE.equals(workspaceName)) { currentWorkspace = QUERY_WORKSPACE; Globals.getMainFrame().changeWorkspace(workspaceName); } else if (REPORT_WORKSPACE.equals(workspaceName)) { currentWorkspace = REPORT_WORKSPACE; Globals.getMainFrame().changeWorkspace(workspaceName); } else if (CHART_WORKSPACE.equals(workspaceName)) { currentWorkspace = CHART_WORKSPACE; Globals.getMainFrame().changeWorkspace(workspaceName); } } public String getCurrentWorkspace(String workspaceName) { return currentWorkspace; } public void storeWorkspaces() throws IOException { queryWorkspace.store(QUERY_WORKSPACE_FILE); reportWorkspace.store(REPORT_WORKSPACE_FILE); chartWorkspace.store(CHART_WORKSPACE_FILE); } public void restoreWorkspaces() throws IOException { queryWorkspace.restore(QUERY_WORKSPACE_FILE); reportWorkspace.restore(REPORT_WORKSPACE_FILE); chartWorkspace.restore(CHART_WORKSPACE_FILE); } private void createQueryWorkspace() { queryWorkspace = new Workspace(QUERY_WORKSPACE); ToolWindowManager toolWindowManager = queryWorkspace.getToolWindowManager(); ToolWindow toolWindow = toolWindowManager.registerToolWindow(QUERY_EXPLORER, // Id QUERY_EXPLORER, // Title ImageUtil.getImageIcon("database"), // Icon (Component) Globals.getMainFrame().getQueryBuilderPanel().getClientProperty(QUERY_EXPLORER), // Component ToolWindowAnchor.LEFT); // Anchor toolWindow.setType(ToolWindowType.DOCKED); DockedTypeDescriptor dockedTypeDescriptor = toolWindow.getTypeDescriptor(DockedTypeDescriptor.class); dockedTypeDescriptor.setIdVisibleOnTitleBar(false); dockedTypeDescriptor.setDockLength(300); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.DOCK_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.PIN_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_LIVE_ACTION_ID).setVisible(false); toolWindow = toolWindowManager.registerToolWindow(QUERY_PARAMETERS, // Id QUERY_PARAMETERS, // Title ImageUtil.getImageIcon("parameters"), // Icon (Component) Globals.getMainFrame().getQueryBuilderPanel().getClientProperty(QUERY_PARAMETERS), // Component ToolWindowAnchor.LEFT); // Anchor toolWindow.setType(ToolWindowType.DOCKED); dockedTypeDescriptor = toolWindow.getTypeDescriptor(DockedTypeDescriptor.class); dockedTypeDescriptor.setIdVisibleOnTitleBar(false); dockedTypeDescriptor.setDockLength(300); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.DOCK_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.PIN_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_LIVE_ACTION_ID).setVisible(false); toolWindow = toolWindowManager.registerToolWindow(QUERY_SQL_LOG, // Id QUERY_SQL_LOG, // Title ImageUtil.getImageIcon("log"), // Icon new LogPanel(), // Component ToolWindowAnchor.BOTTOM); // Anchor toolWindow.setType(ToolWindowType.DOCKED); dockedTypeDescriptor = toolWindow.getTypeDescriptor(DockedTypeDescriptor.class); dockedTypeDescriptor.setIdVisibleOnTitleBar(false); dockedTypeDescriptor.setDockLength(300); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.DOCK_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.PIN_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_LIVE_ACTION_ID).setVisible(false); toolWindowManager.getContentManager().addContent(QUERY_CONTENT, // Id "Query", // Title ImageUtil.getImageIcon("query_perspective"), // Icon (Component) Globals.getMainFrame().getQueryBuilderPanel().getClientProperty(QUERY_CONTENT)); // Component for (ToolWindow tmp : toolWindowManager.getToolWindows()) { tmp.setAvailable(true); } toolWindowManager.getToolWindow(1).setActive(true); toolWindowManager.getToolWindow(2).aggregate(); } private void createReportWorkspace() { reportWorkspace = new Workspace(REPORT_WORKSPACE); ToolWindowManager toolWindowManager = reportWorkspace.getToolWindowManager(); ToolWindow toolWindow = toolWindowManager.registerToolWindow(REPORT_STRUCTURE, // Id REPORT_STRUCTURE, // Title ImageUtil.getImageIcon("componenttree"), // Icon (Component) Globals.getReportDesignerPanel().getClientProperty(REPORT_STRUCTURE), // Component ToolWindowAnchor.LEFT); // Anchor toolWindow.setType(ToolWindowType.DOCKED); toolWindow.aggregate(); DockedTypeDescriptor dockedTypeDescriptor = toolWindow.getTypeDescriptor(DockedTypeDescriptor.class); dockedTypeDescriptor.setIdVisibleOnTitleBar(false); dockedTypeDescriptor.setDockLength(300); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.DOCK_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.PIN_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_LIVE_ACTION_ID).setVisible(false); toolWindow = toolWindowManager.registerToolWindow(REPORT_PROPERTIES, // Id REPORT_PROPERTIES, // Title ImageUtil.getImageIcon("properties"), // Icon (Component) Globals.getReportDesignerPanel().getClientProperty(REPORT_PROPERTIES), // Component ToolWindowAnchor.LEFT); // Anchor toolWindow.setType(ToolWindowType.DOCKED); toolWindow.aggregate(); dockedTypeDescriptor = toolWindow.getTypeDescriptor(DockedTypeDescriptor.class); dockedTypeDescriptor.setIdVisibleOnTitleBar(false); dockedTypeDescriptor.setDockLength(300); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.DOCK_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.PIN_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_LIVE_ACTION_ID).setVisible(false); toolWindowManager.getContentManager().addContent(REPORT_CONTENT, // Id "Report", // Title ImageUtil.getImageIcon("report_perspective"), // Icon (Component) Globals.getReportDesignerPanel().getClientProperty(REPORT_CONTENT)); // Component for (ToolWindow tmp : toolWindowManager.getToolWindows()) { tmp.setAvailable(true); } toolWindowManager.getToolWindow(1).setActive(true); toolWindowManager.getToolWindow(2).aggregate(); } private void createChartWorkspace() { chartWorkspace = new Workspace(CHART_WORKSPACE); ToolWindowManager toolWindowManager = chartWorkspace.getToolWindowManager(); ToolWindow toolWindow = toolWindowManager.registerToolWindow(CHART_PROPERTIES, // Id CHART_PROPERTIES, // Title ImageUtil.getImageIcon("properties"), // Icon (Component) Globals.getChartDesignerPanel().getClientProperty(CHART_PROPERTIES), // Component ToolWindowAnchor.LEFT); // Anchor toolWindow.setType(ToolWindowType.DOCKED); toolWindow.aggregate(); DockedTypeDescriptor dockedTypeDescriptor = toolWindow.getTypeDescriptor(DockedTypeDescriptor.class); dockedTypeDescriptor.setIdVisibleOnTitleBar(false); dockedTypeDescriptor.setDockLength(300); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.DOCK_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.PIN_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_ACTION_ID).setVisible(false); dockedTypeDescriptor.getToolWindowAction(ToolWindowAction.FLOATING_LIVE_ACTION_ID).setVisible(false); toolWindowManager.getContentManager().addContent(CHART_CONTENT, // Id "Chart", // Title ImageUtil.getImageIcon("chart_perspective"), // Icon (Component) Globals.getChartDesignerPanel().getClientProperty(CHART_CONTENT)); // Component for (ToolWindow tmp : toolWindowManager.getToolWindows()) { tmp.setAvailable(true); } toolWindowManager.getToolWindow(1).setActive(true); } }