⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jfreereportdesigner.java

📁 报表设计软件,很好的
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    globalActions.put(SAVE_AS_ACTION_KEY, new SaveAsReportAction());
    globalActions.put(SAVE_ACTION_KEY, new SaveReportAction());

    reopenAction = new ReopenReportAction();
  }

  public final int getSelectedEditor ()
  {
    return selectedRootEditor;
  }

  public final void setSelectedEditor (final int selectedEditor)
  {
    final int oldEditor = this.selectedRootEditor;
    if (oldEditor == selectedEditor)
    {
      // no change - so nothing to do!
      return;
    }
    this.selectedRootEditor = selectedEditor;
    // make sure that only the selected editor is active.
    // all other editors will be disabled, if needed and
    // not touched if they are already in the correct state

    for (int i = 0; i < rootEditors.length; i++)
    {
      final boolean shouldBeActive = (i == selectedEditor);
      final RootEditorContainer container = rootEditors[i];
      if (container.getEditor().isActive() &&
              (shouldBeActive == false))
      {
        container.getEditor().setActive(false);
      }
    }

    if (currentToolbar != null)
    {
      closeToolbar();
      toolbarContainer.removeAll();
      currentToolbar = null;
    }

    for (int i = 0; i < rootEditors.length; i++)
    {
      final boolean shouldBeActive = (i == selectedEditor);
      final RootEditorContainer container = rootEditors[i];
      if ((container.getEditor().isActive() == false) &&
              (shouldBeActive == true))
      {
        container.getEditor().setActive(true);
        setJMenuBar(container.getEditorMenuBar());
        currentToolbar = container.getEditorToolbar();
        if (currentToolbar != null)
        {
          toolbarContainer.add
                  (currentToolbar, BorderLayout.CENTER);
          currentToolbar.setVisible(true);
        }
      }
    }
  }

  private void closeToolbar ()
  {
    if (currentToolbar != null)
    {
      if (currentToolbar.getParent() != toolbarContainer)
      {
        // ha!, the toolbar is floating ...
        // Log.debug (currentToolbar.getParent());
        final Window w = SwingUtilities.windowForComponent(currentToolbar);
        if (w != null)
        {
          w.setVisible(false);
          w.dispose();
        }
      }
      currentToolbar.setVisible(false);
    }
  }

  private JMenu createFileMenu ()
  {
    menuReopen = new JMenu(resources.getString("designer.menu.File.Reopen"));
    menuReopen.setIcon(ImageUtils.createTransparentIcon(16, 16));
    menuReopen.setEnabled(false);

    reopenAction.setEnabled(false);

    final JMenu mFile = new JMenu(resources.getString("designer.menu.File"));
    mFile.setMnemonic(KeyEvent.VK_F);
    mFile.add(new NewReportAction());
    mFile.add(new OpenReportAction());
    mFile.add(reopenAction);
    mFile.add(new SaveReportAction());
    mFile.add(new SaveAsReportAction());
    mFile.addSeparator();
    mFile.add(new DatabaseAction());
    mFile.add(new PreferencesAction());
    mFile.addSeparator();
    mFile.add(menuReopen);
    mFile.addSeparator();
    mFile.add(new ExitAction());

    loadFilesForReopen();

    return mFile;
  }

  private JMenu createHelpMenu ()
  {
    final JMenu mHelp = new JMenu(resources.getString("designer.menu.Help"));
    mHelp.setMnemonic(KeyEvent.VK_H);
    mHelp.add(new AboutAction());
    return mHelp;
  }

  private JMenuBar createCustomMenu (final JMenu[] customMenus)
  {
    final JMenuBar menuBar = new JMenuBar();
    menuBar.add(createFileMenu());
    for (int i = 0; i < customMenus.length; i++)
    {
      menuBar.add(customMenus[i]);
    }
    menuBar.add(createHelpMenu());
    return menuBar;
  }

  private RootEditorContainer createPreviewEditor ()
  {
    final RootEditor ed = new VisualEditPanel(reportDefinitionManager);
    final JMenuBar menuBar = createCustomMenu(ed.getEditorMenus());
    return new RootEditorContainer(ed, menuBar);
  }

  private RootEditorContainer createXmlEditor ()
  {
    final RootEditor ed = new TextEditPanel(reportDefinitionManager);
    final JMenuBar menuBar = createCustomMenu(ed.getEditorMenus());
    return new RootEditorContainer(ed, menuBar);
  }

  private RootEditorContainer createDataEditor ()
  {
    final RootEditor ed = new DataPanel(reportDefinitionManager);
    final JMenuBar menuBar = createCustomMenu(ed.getEditorMenus());
    return new RootEditorContainer(ed, menuBar);
  }

  private void initialize ()
  {
    toolbarContainer = new JPanel();
    toolbarContainer.setLayout(new BorderLayout());

    rootEditors = new RootEditorContainer[3];
    rootEditors[0] = createXmlEditor();
    rootEditors[1] = createPreviewEditor();
    rootEditors[2] = createDataEditor();

    tabbedPane = new JTabbedPane(JTabbedPane.BOTTOM);
    tabbedPane.addChangeListener(new TabChangeHandler(tabbedPane));

    for (int i = 0; i < rootEditors.length; i++)
    {
      final String name = rootEditors[i].getEditor().getEditorName();
      final Component c = rootEditors[i].getEditor().getEditorComponent();
      tabbedPane.add(name, c);
    }

    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(toolbarContainer, BorderLayout.NORTH);
    getContentPane().add(tabbedPane, BorderLayout.CENTER);
  }

  public static void main (final String[] args)
  {
    try
    {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch (Exception e)
    {
    }

    Boot.start();
    PropertyEditorManager.registerEditor(Boolean.class, BooleanPropertyEditor.class);
    final JFreeReportDesigner reportDesigner = new JFreeReportDesigner();

    try
    {
      final Configuration config =
              reportDesigner.reportDefinitionManager.getEditorConfiguration();
      final int left = Integer.parseInt
              (config.getConfigProperty("window.left", "100"));
      final int top = Integer.parseInt
              (config.getConfigProperty("window.top", "100"));
      final int width = Integer.parseInt
              (config.getConfigProperty("window.width", "700"));
      final int height = Integer.parseInt
              (config.getConfigProperty("window.height", "500"));
      reportDesigner.setBounds(left, top, width, height);
    }
    catch (Exception ex)
    {
      Log.debug("invalid debug", ex);
    }

    RefineryUtilities.centerFrameOnScreen(reportDesigner);
    reportDesigner.setVisible(true);
  }

  private void windowExit ()
  {
    final DefaultConfiguration config =
            reportDefinitionManager.getEditorConfiguration();
    config.setProperty
            ("window.left", String.valueOf(getX()));
    config.setProperty
            ("window.top", String.valueOf(getY()));
    config.setProperty
            ("window.width", String.valueOf(getWidth()));
    config.setProperty
            ("window.height", String.valueOf(getHeight()));
    reportDefinitionManager.storeConfiguration();
    System.exit(0);
  }

  public final void setWaitCursor ()
  {
    setCursor(new Cursor(Cursor.WAIT_CURSOR));
  }

  public final void setDefaultCursor ()
  {
    setCursor(Cursor.getDefaultCursor());
  }

  // aus dem Editor hierher 黚ernommen
  private boolean saveReport ()
  {
    final int selectedEditor = getSelectedEditor();
    setSelectedEditor(-1);
    if (currentFile == null)
    {
      fileChooser.showSaveDialog(this);
      final File file = fileChooser.getSelectedFile();
      if (file == null)
      {
        return false;
      }

      currentFile = file;
      //JFreeReportDesigner.setFile(file.toString());
    }

    try
    {
      final String xml = reportDefinitionManager.getReportDefinitionText();
      final BufferedWriter bw = new BufferedWriter(new FileWriter(currentFile));
      bw.write(xml);
      bw.flush();
      bw.close();
      return true;
    }
    catch (Exception ex)
    {
      JFreeReportDesigner.showMessageDialog(ex.toString(),
              JOptionPane.ERROR_MESSAGE);
      return false;
    }
    finally
    {
      setSelectedEditor(selectedEditor);
    }
  }

  private void loadReport (final File file)
  {
    if (file != null)
    {
      try
      {
        final FileReader fr = new FileReader(file);
        final BufferedReader br = new BufferedReader(fr);
        final StringBuffer sb = new StringBuffer();
        String line;

        while ((line = br.readLine()) != null)
        {
          sb.append(line + "\n");
        }
        fr.close();

        final int selectedEditor = getSelectedEditor();
        setSelectedEditor(-1);
        reportDefinitionManager.setReportDefinitionText(sb.toString());
        reportDefinitionManager.setReportData(null);
        setSelectedEditor(selectedEditor);
        setCurrentFile(file);
        addFileForReopen(file.toString());
      }
      catch (Exception ex)
      {
        ex.printStackTrace();
        JFreeReportDesigner.showMessageDialog(ex.toString(),
                JOptionPane.ERROR_MESSAGE);
      }
    }
  }

  private void addFileForReopen (final String fileName)
  {
    if (fileName == null)
    {
      throw new NullPointerException("FileName must not be null.");
    }
    // for now only check to see if opening same file
    if ((fileNames.isEmpty() == false) && (fileNames.get(0).equals(fileName)))
    {
      return;
    }

    // if file is already in list, then move it to the front
    if (fileNames.contains(fileName))
    {
      fileNames.remove(fileName);
    }
    // move all files down one position .. the last file is discarded
    fileNames.add(0, fileName);
    // if there are too much files now, remove the last one ...
    if (fileNames.size() > MAX_RECENT_FILES)
    {
      fileNames.remove(fileNames.size() - 1);
    }
    saveFilesForReopen();
  }

  private void loadFilesForReopen ()
  {
    for (int i = 0; i < MAX_RECENT_FILES; i++)
    {
      final String newFile =
              reportDefinitionManager.getEditorConfiguration().getProperty("file." + i);
      if (newFile != null)
      {
        fileNames.add(newFile);
      }
    }

    rebuildRecentFilesMenu();
  }

  private void saveFilesForReopen ()
  {
    for (int i = 0; i < fileNames.size(); i++)
    {
      if (fileNames.get(i) != null)
      {
        reportDefinitionManager.getEditorConfiguration().setProperty
                ("file." + i, String.valueOf(fileNames.get(i)));
      }
    }
    rebuildRecentFilesMenu();
  }

  private void rebuildRecentFilesMenu ()
  {
    menuReopen.removeAll();
    if (fileNames.size() > 0)
    {
      for (int i = 0; i < fileNames.size(); i++)
      {
        final String fileName = (String) fileNames.get(i);
        if (fileName != null)
        {
          final RecentFileAction action = new RecentFileAction(fileName);
          menuReopen.add(action);
          menuReopen.setEnabled(true);
        }
      }
    }
    else
    {
      menuReopen.setEnabled(true);
    }
  }

  private void reopenReport ()
  {
    if (currentFile == null)
    {
      return;
    }
    loadReport(currentFile);
  }

  private void openReport ()
  {
    final int returnVal = fileChooser.showOpenDialog(this);
    if (returnVal == JFileChooser.APPROVE_OPTION)
    {
      loadReport(fileChooser.getSelectedFile());
    }
  }

  private void newReport ()
  {
    reportDefinitionManager.setReport(new JFreeReport());
    reportDefinitionManager.setReportData(null);
    setCurrentFile(null);
  }

  public final File getCurrentFile ()
  {
    return currentFile;
  }

  public final void setCurrentFile (final File currentFile)
  {
    if (currentFile == null)
    {
      setTitle(resources.getString("designer.Title"));
      reopenAction.setEnabled(false);
    }
    else
    {
      setTitle
              (MessageFormat.format(resources.getString("designer.Title-with-file"),
                      new Object[]{currentFile}));
      reopenAction.setEnabled(true);
    }
    this.currentFile = currentFile;
  }

  public static void showMessageDialog (final String message, final int type)
  {
    JOptionPane.showMessageDialog(null,
            message,
            "JFreeReport Designer",
            type);
  }

  public static int showConfirmDialog (final String message, final int type)
  {
    return JOptionPane.showConfirmDialog(null,
            message,
            "JFreeReport Designer",
            type);
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -