diff --git a/pom.xml b/pom.xml
index eab2bbbb..91b4e21f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -97,6 +97,12 @@
${itext.version}
test
+
+
+ net.sourceforge.mydoggy
+ mydoggy-plaf
+ 1.5.0-beta-r1389
+
diff --git a/src/main/java/com/itextpdf/rups/controller/PdfReaderController.java b/src/main/java/com/itextpdf/rups/controller/PdfReaderController.java
index 9aede3b6..c4dd6553 100644
--- a/src/main/java/com/itextpdf/rups/controller/PdfReaderController.java
+++ b/src/main/java/com/itextpdf/rups/controller/PdfReaderController.java
@@ -72,13 +72,11 @@ This file is part of the iText (R) project.
import com.itextpdf.rups.view.icons.IconTreeNode;
import com.itextpdf.rups.view.itext.FormTree;
import com.itextpdf.rups.view.itext.OutlineTree;
-import com.itextpdf.rups.view.itext.PagesTable;
import com.itextpdf.rups.view.itext.PdfObjectPanel;
import com.itextpdf.rups.view.itext.PdfTree;
import com.itextpdf.rups.view.itext.PlainText;
import com.itextpdf.rups.view.itext.StructureTree;
import com.itextpdf.rups.view.itext.SyntaxHighlightedStreamPane;
-import com.itextpdf.rups.view.itext.XRefTable;
import com.itextpdf.rups.view.itext.treenodes.PdfObjectTreeNode;
import com.itextpdf.rups.view.itext.treenodes.PdfTrailerTreeNode;
@@ -110,10 +108,6 @@ public class PdfReaderController extends Observable implements Observer {
* Tabbed Pane containing other components.
*/
protected JTabbedPane navigationTabs;
- /**
- * JTable with all the pages and their labels.
- */
- protected PagesTable pages;
/**
* Treeview of the outlines.
*/
@@ -126,10 +120,6 @@ public class PdfReaderController extends Observable implements Observer {
* Treeview of the form.
*/
protected FormTree form;
- /**
- * JTable corresponding with the CrossReference table.
- */
- protected XRefTable xref;
/**
* A panel that will show PdfObjects.
*/
@@ -174,23 +164,17 @@ public PdfReaderController(TreeSelectionListener treeSelectionListener,
pdfTree.setComponentPopupMenu(menu);
pdfTree.addMouseListener(new PdfTreeContextMenuMouseListener(menu, pdfTree));
addObserver(pdfTree);
-
- pages = new PagesTable(this, pageSelectionListener);
- addObserver(pages);
outlines = new OutlineTree(this);
addObserver(outlines);
structure = new StructureTree(this);
addObserver(structure);
form = new FormTree(this);
addObserver(form);
- xref = new XRefTable(this);
- addObserver(xref);
text = new PlainText();
addObserver(text);
navigationTabs = new JTabbedPane();
final String pagesString = Language.PAGES.getString();
- navigationTabs.addTab(pagesString, null, new JScrollPane(pages), pagesString);
navigationTabs.addTab(Language.OUTLINES.getString(), null, new JScrollPane(outlines),
Language.OUTLINES_BOOKMARKS.getString());
navigationTabs.addTab(Language.STRUCTURE.getString(), null, new JScrollPane(structure),
@@ -199,8 +183,6 @@ public PdfReaderController(TreeSelectionListener treeSelectionListener,
Language.FORM_INTERACTIVE.getString());
navigationTabs.addTab(Language.FORM_XFA.getString(), null, new JScrollPane(form.getXfaTree()),
Language.FORM_XFA_DESCRIPTION.getString());
- navigationTabs.addTab(Language.XREF.getString(), null, new JScrollPane(xref),
- Language.XREF_DESCRIPTION.getString());
navigationTabs.addTab(Language.PLAINTEXT.getString(), null, new JScrollPane(text),
Language.PLAINTEXT_DESCRIPTION.getString());
navigationTabs.addChangeListener(new ChangeListener() {
@@ -406,7 +388,7 @@ public void render(PdfObjectTreeNode node) {
* @param pageNumber the page number that needs to be selected
*/
public void gotoPage(int pageNumber) {
- pageNumber--;
+ /**pageNumber--;
if (pages == null
|| pages.getSelectedRow() == pageNumber) {
@@ -415,7 +397,7 @@ public void gotoPage(int pageNumber) {
if (pageNumber < pages.getRowCount()) {
pages.setRowSelectionInterval(pageNumber, pageNumber);
- }
+ }*/
}
protected void highlightChanges(CompareTool.CompareResult compareResult) {
diff --git a/src/main/java/com/itextpdf/rups/controller/RupsController.java b/src/main/java/com/itextpdf/rups/controller/RupsController.java
index 855bf788..48bcb808 100644
--- a/src/main/java/com/itextpdf/rups/controller/RupsController.java
+++ b/src/main/java/com/itextpdf/rups/controller/RupsController.java
@@ -140,7 +140,7 @@ public final void openNewFile(File file) {
return;
}
- this.rupsTabbedPane.openNewFile(file, this.dimension, false);
+ this.rupsTabbedPane.openNewFile(file, false);
this.update(this, new OpenFileEvent(file));
}
}
diff --git a/src/main/java/com/itextpdf/rups/controller/RupsInstanceController.java b/src/main/java/com/itextpdf/rups/controller/RupsInstanceController.java
index 675aed01..ef5577f8 100644
--- a/src/main/java/com/itextpdf/rups/controller/RupsInstanceController.java
+++ b/src/main/java/com/itextpdf/rups/controller/RupsInstanceController.java
@@ -44,41 +44,36 @@ This file is part of the iText (R) project.
import com.itextpdf.kernel.exceptions.PdfException;
import com.itextpdf.kernel.pdf.PdfDocument;
-import com.itextpdf.kernel.pdf.PdfReader;
-import com.itextpdf.kernel.utils.CompareTool;
import com.itextpdf.rups.event.CloseDocumentEvent;
-import com.itextpdf.rups.event.PostCompareEvent;
import com.itextpdf.rups.event.RupsEvent;
import com.itextpdf.rups.event.TreeNodeClickedEvent;
import com.itextpdf.rups.model.LoggerHelper;
import com.itextpdf.rups.model.ObjectLoader;
import com.itextpdf.rups.model.PdfFile;
import com.itextpdf.rups.model.ProgressDialog;
-import com.itextpdf.rups.view.Console;
import com.itextpdf.rups.view.Language;
import com.itextpdf.rups.view.PageSelectionListener;
-import com.itextpdf.rups.view.contextmenu.ConsoleContextMenu;
-import com.itextpdf.rups.view.contextmenu.ContextMenuMouseListener;
+import com.itextpdf.rups.view.dock.InfoDockPanel;
+import com.itextpdf.rups.view.dock.XRefTable;
+import com.itextpdf.rups.view.dock.PagesTable;
import com.itextpdf.rups.view.itext.treenodes.PdfObjectTreeNode;
import com.itextpdf.rups.view.itext.treenodes.PdfTrailerTreeNode;
-import java.awt.BorderLayout;
-import java.awt.Dimension;
+import java.awt.*;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
-import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
-import javax.swing.JSplitPane;
-import javax.swing.JTabbedPane;
import javax.swing.SwingUtilities;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
@@ -108,7 +103,7 @@ public class RupsInstanceController extends Observable
/**
* Contains all other components: the page panel, the outline tree, etc.
*/
- private final JSplitPane masterComponent;
+ private final JPanel masterComponent;
/**
* The Pdf file that is currently open in the application.
@@ -117,55 +112,27 @@ public class RupsInstanceController extends Observable
private ObjectLoader loader;
+ private Map dockedComponentsMap;
+
// constructor
/**
* Constructs the GUI components of the RUPS application.
*
- * @param dimension the dimension
* @param owner the jpanel
*/
- public RupsInstanceController(Dimension dimension, JPanel owner) {
+ public RupsInstanceController(JPanel owner) {
// creating components and controllers
this.ownerPanel = owner;
- final Console console = Console.getInstance();
- addObserver(console);
- console.addObserver(this);
- readerController = new PdfReaderController(this, this);
+ this.dockedComponentsMap = new HashMap<>();
+ this.readerController = new PdfReaderController(this, this);
+
addObserver(readerController);
- // creating the master component
- masterComponent = new JSplitPane();
- masterComponent.setOrientation(JSplitPane.VERTICAL_SPLIT);
- masterComponent.setDividerLocation((int) (dimension.getHeight() * .70));
- masterComponent.setDividerSize(2);
-
- final JSplitPane content = new JSplitPane();
- masterComponent.add(content, JSplitPane.TOP);
- final JSplitPane info = new JSplitPane();
- masterComponent.add(info, JSplitPane.BOTTOM);
-
- content.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
- content.setDividerLocation((int) (dimension.getWidth() * .6));
- content.setDividerSize(1);
- JPanel treePanel = new JPanel(new BorderLayout());
- treePanel.add(new JScrollPane(readerController.getPdfTree()), BorderLayout.CENTER);
- content.add(treePanel, JSplitPane.LEFT);
- content.add(readerController.getNavigationTabs(), JSplitPane.RIGHT);
-
- info.setDividerLocation((int) (dimension.getWidth() * .3));
- info.setDividerSize(1);
- info.add(readerController.getObjectPanel(), JSplitPane.LEFT);
- final JTabbedPane editorPane = readerController.getEditorTabs();
- final JScrollPane cons = new JScrollPane(console.getTextArea());
- console.getTextArea().addMouseListener(
- new ContextMenuMouseListener(ConsoleContextMenu.getPopupMenu(console.getTextArea()),
- console.getTextArea()));
- editorPane.addTab(Language.CONSOLE.getString(), null, cons, Language.CONSOLE_TOOL_TIP.getString());
- editorPane.setSelectedComponent(cons);
- info.add(editorPane, JSplitPane.RIGHT);
-
- ownerPanel.add(masterComponent, BorderLayout.CENTER);
+ this.masterComponent = new JPanel(new BorderLayout());
+ this.masterComponent.add(new JScrollPane(readerController.getPdfTree()), BorderLayout.CENTER);
+
+ ownerPanel.add(this.masterComponent, BorderLayout.CENTER);
}
public final void update(Observable o, Object arg) {
@@ -174,19 +141,11 @@ public final void update(Observable o, Object arg) {
final RupsEvent event = (RupsEvent) arg;
switch (event.getType()) {
case RupsEvent.OPEN_DOCUMENT_POST_EVENT:
- setChanged();
+ setChanged();
super.notifyObservers(event);
break;
}
}
- //Events from observable classes
- if (o != null && arg instanceof RupsEvent) {
- final RupsEvent event = (RupsEvent) arg;
- if (RupsEvent.CONSOLE_WRITE_EVENT == event.getType()) {
- readerController.getEditorTabs()
- .setSelectedIndex(readerController.getEditorTabs().getComponentCount() - 1);
- }
- }
}
/**
@@ -200,6 +159,17 @@ public void loadFile(File file, boolean readOnly) {
final Path filePath = Paths.get(file.toURI());
final byte[] contents = Files.readAllBytes(filePath);
loadRawContent(contents, file.getName(), file.getParentFile(), readOnly);
+
+ // TODO refactor this!
+ InfoDockPanel infoDockPanel = new InfoDockPanel(pdfFile);
+ this.dockedComponentsMap.put(InfoDockPanel.class, infoDockPanel);
+
+ XRefTable xRefTable = new XRefTable(readerController, loader);
+ this.dockedComponentsMap.put(XRefTable.class, xRefTable);
+
+ PagesTable pagesTable = new PagesTable(readerController, this, loader);
+ this.dockedComponentsMap.put(PagesTable.class, pagesTable);
+ this.readerController.addObserver(pagesTable);
} catch (IOException ioe) {
JOptionPane.showMessageDialog(masterComponent, ioe.getMessage(), Language.DIALOG.getString(),
JOptionPane.ERROR_MESSAGE);
@@ -283,59 +253,6 @@ public final void closeRoutine() {
readerController.getParser().setDocument(null);
}
- public final CompareTool.CompareResult compareWithDocument(PdfDocument document) {
- if (getPdfFile() == null || getPdfFile().getPdfDocument() == null) {
- LoggerHelper.warn(Language.ERROR_NO_OPEN_DOCUMENT_COMPARE.getString(), getClass());
- } else if (document == null) {
- LoggerHelper.warn(Language.ERROR_COMPARED_DOCUMENT_NULL.getString(), getClass());
- } else if (document.isClosed()) {
- LoggerHelper.warn(Language.ERROR_COMPARED_DOCUMENT_CLOSED.getString(), getClass());
- } else {
- final CompareTool compareTool =
- new CompareTool().setCompareByContentErrorsLimit(100).disableCachedPagesComparison();
- return compareTool.compareByCatalog(getPdfFile().getPdfDocument(), document);
- }
- return null;
- }
-
- public final CompareTool.CompareResult compareWithFile(File file) {
- try (PdfReader readerPdf = new PdfReader(file.getAbsolutePath());
- final PdfDocument cmpDocument = new PdfDocument(readerPdf)) {
- return compareWithDocument(cmpDocument);
- } catch (IOException e) {
- LoggerHelper.warn(Language.ERROR_COMPARE_DOCUMENT_CREATION.getString(), e, getClass());
- return null;
- }
- }
-
- public final CompareTool.CompareResult compareWithStream(InputStream is) {
- try (PdfReader reader = new PdfReader(is);
- PdfDocument cmpDocument = new PdfDocument(reader)) {
- reader.setCloseStream(false);
- return compareWithDocument(cmpDocument);
- } catch (IOException e) {
- LoggerHelper.warn(Language.ERROR_COMPARE_DOCUMENT_CREATION.getString(), e, getClass());
- return null;
- }
- }
-
- /**
- * Clear all previous highlights and highlights the changes from the compare result.
- * If compare result is null will just clear all previous highlights.
- *
- * @param compareResult the compare result
- */
- public void highlightChanges(CompareTool.CompareResult compareResult) {
- readerController.update(this, new PostCompareEvent(compareResult));
- if (compareResult != null) {
- if (compareResult.isOk()) {
- LoggerHelper.info(Language.COMPARE_EQUAL.getString(), getClass());
- } else {
- LoggerHelper.info(compareResult.getReport(), getClass());
- }
- }
- }
-
private void startObjectLoader() {
final ProgressDialog dialog =
new ProgressDialog(this.ownerPanel, Language.PDF_READING.getString(), null);
@@ -379,4 +296,7 @@ public PdfFile getPdfFile() {
return pdfFile;
}
+ public Component getDockedComponent(Class infoDockPanelClass) {
+ return this.dockedComponentsMap.get(infoDockPanelClass);
+ }
}
diff --git a/src/main/java/com/itextpdf/rups/model/ObjectLoader.java b/src/main/java/com/itextpdf/rups/model/ObjectLoader.java
index 87e26fe8..c62f777e 100644
--- a/src/main/java/com/itextpdf/rups/model/ObjectLoader.java
+++ b/src/main/java/com/itextpdf/rups/model/ObjectLoader.java
@@ -56,18 +56,22 @@ public class ObjectLoader extends BackgroundTask {
* This is the object that wait for task to complete.
*/
protected Observer observer;
+
/**
* RUPS's PdfFile object.
*/
protected PdfFile file;
+
/**
* The factory that can provide PDF objects.
*/
protected IndirectObjectFactory objects;
+
/**
* The factory that can provide tree nodes.
*/
protected TreeNodeFactory nodes;
+
/**
* a human readable name for this loaded
*/
@@ -91,9 +95,9 @@ public ObjectLoader(Observer observer, PdfFile file, String loaderName, IProgres
}
/**
- * Getter for the PdfReader object.
+ * Getter for the PdfFile object.
*
- * @return a reader object
+ * @return a PdfFile object
*/
public PdfFile getFile() {
return file;
diff --git a/src/main/java/com/itextpdf/rups/view/RupsPanel.java b/src/main/java/com/itextpdf/rups/view/RupsPanel.java
index e759540f..38b3a124 100644
--- a/src/main/java/com/itextpdf/rups/view/RupsPanel.java
+++ b/src/main/java/com/itextpdf/rups/view/RupsPanel.java
@@ -45,7 +45,8 @@ This file is part of the iText (R) project.
import com.itextpdf.rups.controller.RupsInstanceController;
import com.itextpdf.rups.model.PdfFile;
-import java.awt.BorderLayout;
+import java.awt.*;
+import java.util.Map;
import javax.swing.JPanel;
/**
@@ -54,6 +55,8 @@ This file is part of the iText (R) project.
*/
public class RupsPanel extends JPanel {
+ private Map dockingMap;
+
private RupsInstanceController rupsInstanceController;
public RupsPanel() {
diff --git a/src/main/java/com/itextpdf/rups/view/RupsTabbedPane.java b/src/main/java/com/itextpdf/rups/view/RupsTabbedPane.java
index 83ecb863..c1622096 100644
--- a/src/main/java/com/itextpdf/rups/view/RupsTabbedPane.java
+++ b/src/main/java/com/itextpdf/rups/view/RupsTabbedPane.java
@@ -44,13 +44,15 @@ This file is part of the iText (R) project.
import com.itextpdf.rups.controller.RupsInstanceController;
import com.itextpdf.rups.model.PdfFile;
+import com.itextpdf.rups.view.dock.TabChangeListener;
+import org.noos.xing.mydoggy.ToolWindow;
+import org.noos.xing.mydoggy.ToolWindowAnchor;
+import org.noos.xing.mydoggy.plaf.MyDoggyToolWindowManager;
import java.awt.Component;
import java.awt.Dimension;
import java.io.File;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTabbedPane;
+import javax.swing.*;
/**
* The class holding the JTabbedPane that holds the Rups tabs. This class is responsible for loading, closing, and
@@ -62,22 +64,55 @@ public class RupsTabbedPane {
private final JPanel defaultTab;
private final JTabbedPane jTabbedPane;
+ private MyDoggyToolWindowManager toolWindowManager;
public RupsTabbedPane() {
+ MyDoggyToolWindowManager myDoggyToolWindowManager = new MyDoggyToolWindowManager();
+ this.toolWindowManager = myDoggyToolWindowManager;
+
+ // Register a Tool.
+ toolWindowManager.registerToolWindow("Info", // Id
+ "Info Tab", // Title
+ null, // Icon
+ new JLabel("No open file."), // Component
+ ToolWindowAnchor.RIGHT); // Anchor
+
+ toolWindowManager.registerToolWindow("XREF",
+ "XREF Table",
+ null,
+ new JLabel("No open file."),
+ ToolWindowAnchor.RIGHT);
+
+ toolWindowManager.registerToolWindow("Pages",
+ "Pages",
+ null,
+ new JLabel("No open file."),
+ ToolWindowAnchor.RIGHT);
+
+ // Made all tools available
+ for (ToolWindow window : toolWindowManager.getToolWindows()) {
+ window.setAvailable(true);
+ window.setActive(false);
+ }
+
this.jTabbedPane = new JTabbedPane();
this.defaultTab = new JPanel();
this.defaultTab.add(new JLabel(Language.DEFAULT_TAB_TEXT.getString()));
this.jTabbedPane.addTab(Language.DEFAULT_TAB_TITLE.getString(), defaultTab);
+ TabChangeListener l = new TabChangeListener();
+ l.setDoggy(toolWindowManager);
+ this.jTabbedPane.addChangeListener(l);
+ myDoggyToolWindowManager.setMainContent(jTabbedPane);
}
- public void openNewFile(File file, Dimension dimension, boolean readonly) {
+ public void openNewFile(File file, boolean readonly) {
if (file != null) {
if (this.defaultTab.equals(this.jTabbedPane.getSelectedComponent())) {
this.jTabbedPane.removeTabAt(this.jTabbedPane.getSelectedIndex());
}
RupsPanel rupsPanel = new RupsPanel();
- RupsInstanceController rupsInstanceController = new RupsInstanceController(dimension, rupsPanel);
+ RupsInstanceController rupsInstanceController = new RupsInstanceController(rupsPanel);
rupsPanel.setRupsInstanceController(rupsInstanceController);
rupsInstanceController.loadFile(file, readonly);
this.jTabbedPane.addTab(file.getName(), null, rupsPanel);
@@ -109,7 +144,7 @@ public void saveCurrentFile(File file) {
}
public Component getJTabbedPane() {
- return this.jTabbedPane;
+ return this.toolWindowManager;
}
/**
diff --git a/src/main/java/com/itextpdf/rups/view/dock/InfoDockPanel.java b/src/main/java/com/itextpdf/rups/view/dock/InfoDockPanel.java
new file mode 100644
index 00000000..973b5fb4
--- /dev/null
+++ b/src/main/java/com/itextpdf/rups/view/dock/InfoDockPanel.java
@@ -0,0 +1,24 @@
+package com.itextpdf.rups.view.dock;
+
+import com.itextpdf.kernel.pdf.PdfDocument;
+import com.itextpdf.kernel.pdf.PdfDocumentInfo;
+import com.itextpdf.rups.model.PdfFile;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class InfoDockPanel extends JPanel {
+
+ public InfoDockPanel(PdfFile pdfFile) {
+ Box box = Box.createVerticalBox();
+ add(box);
+
+ PdfDocument pdfDocument = pdfFile.getPdfDocument();
+ PdfDocumentInfo documentInfo = pdfDocument.getDocumentInfo();
+
+ box.add(new JLabel(pdfFile.getFilename()));
+ box.add(new JLabel(documentInfo.getProducer()));
+ box.add(new JLabel(documentInfo.getAuthor()));
+ box.add(new JLabel(documentInfo.getTitle()));
+ }
+}
diff --git a/src/main/java/com/itextpdf/rups/view/itext/PagesTable.java b/src/main/java/com/itextpdf/rups/view/dock/PagesTable.java
similarity index 96%
rename from src/main/java/com/itextpdf/rups/view/itext/PagesTable.java
rename to src/main/java/com/itextpdf/rups/view/dock/PagesTable.java
index cbf1e723..28204928 100644
--- a/src/main/java/com/itextpdf/rups/view/itext/PagesTable.java
+++ b/src/main/java/com/itextpdf/rups/view/dock/PagesTable.java
@@ -40,16 +40,18 @@ This file is part of the iText (R) project.
For more information, please contact iText Software Corp. at this
address: sales@itextpdf.com
*/
-package com.itextpdf.rups.view.itext;
+package com.itextpdf.rups.view.dock;
import com.itextpdf.kernel.pdf.PdfDictionary;
import com.itextpdf.kernel.pdf.PdfName;
import com.itextpdf.rups.controller.PdfReaderController;
+import com.itextpdf.rups.controller.RupsInstanceController;
import com.itextpdf.rups.event.RupsEvent;
import com.itextpdf.rups.model.ObjectLoader;
import com.itextpdf.rups.model.TreeNodeFactory;
import com.itextpdf.rups.view.Language;
import com.itextpdf.rups.view.PageSelectionListener;
+import com.itextpdf.rups.view.itext.PageEnumerator;
import com.itextpdf.rups.view.itext.treenodes.PdfObjectTreeNode;
import com.itextpdf.rups.view.itext.treenodes.PdfPageTreeNode;
import com.itextpdf.rups.view.itext.treenodes.PdfTrailerTreeNode;
@@ -69,6 +71,7 @@ This file is part of the iText (R) project.
*/
public class PagesTable extends JTable implements JTableAutoModelInterface, Observer {
+ private final ObjectLoader loader;
/**
* A list with page nodes.
*/
@@ -85,10 +88,12 @@ public class PagesTable extends JTable implements JTableAutoModelInterface, Obse
*
* @param controller the pdf reader controller
* @param listener the page navigation listener
+ * @param loader
*/
- public PagesTable(PdfReaderController controller, PageSelectionListener listener) {
+ public PagesTable(PdfReaderController controller, PageSelectionListener listener, ObjectLoader loader) {
this.controller = controller;
this.listener = listener;
+ this.loader = loader;
setModel(new JTableAutoModel(this));
}
@@ -201,4 +206,4 @@ public void valueChanged(ListSelectionEvent evt) {
}
}
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/com/itextpdf/rups/view/dock/TabChangeListener.java b/src/main/java/com/itextpdf/rups/view/dock/TabChangeListener.java
new file mode 100644
index 00000000..e16ad9b1
--- /dev/null
+++ b/src/main/java/com/itextpdf/rups/view/dock/TabChangeListener.java
@@ -0,0 +1,43 @@
+package com.itextpdf.rups.view.dock;
+
+import com.itextpdf.rups.controller.RupsInstanceController;
+import com.itextpdf.rups.view.RupsPanel;
+import org.noos.xing.mydoggy.ToolWindow;
+import org.noos.xing.mydoggy.ToolWindowTab;
+import org.noos.xing.mydoggy.plaf.MyDoggyToolWindowManager;
+
+import javax.swing.*;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ChangeListener;
+import java.awt.*;
+import java.util.Observable;
+
+public class TabChangeListener extends Observable implements ChangeListener {
+ private MyDoggyToolWindowManager doggy;
+
+ @Override
+ public void stateChanged(ChangeEvent e) {
+ JTabbedPane tabbedPane = (JTabbedPane) e.getSource();
+ if ( tabbedPane.getSelectedComponent() instanceof RupsPanel) {
+ RupsPanel rupsPanel = ((RupsPanel) (tabbedPane.getSelectedComponent()));
+ RupsInstanceController controller = rupsPanel.getRupsInstanceController();
+
+ ToolWindow info = doggy.getToolWindow("Info");
+ info.getToolWindowTabs()[0].setComponent(controller.getDockedComponent(InfoDockPanel.class));
+
+ ToolWindow xref = doggy.getToolWindow("XREF");
+ ToolWindowTab[] toolWindowTabs = xref.getToolWindowTabs();
+ Component dockedComponent = controller.getDockedComponent(XRefTable.class);
+ toolWindowTabs[0].setComponent(dockedComponent);
+
+ ToolWindow pages = doggy.getToolWindow("Pages");
+ pages.getToolWindowTabs()[0].setComponent(controller.getDockedComponent(PagesTable.class));
+
+ doggy.repaint();
+ }
+ }
+
+ public void setDoggy(MyDoggyToolWindowManager toolWindowManager) {
+ this.doggy = toolWindowManager;
+ }
+}
diff --git a/src/main/java/com/itextpdf/rups/view/itext/XRefTable.java b/src/main/java/com/itextpdf/rups/view/dock/XRefTable.java
similarity index 93%
rename from src/main/java/com/itextpdf/rups/view/itext/XRefTable.java
rename to src/main/java/com/itextpdf/rups/view/dock/XRefTable.java
index f53f0b06..c1a8d2d0 100644
--- a/src/main/java/com/itextpdf/rups/view/itext/XRefTable.java
+++ b/src/main/java/com/itextpdf/rups/view/dock/XRefTable.java
@@ -40,11 +40,12 @@ This file is part of the iText (R) project.
For more information, please contact iText Software Corp. at this
address: sales@itextpdf.com
*/
-package com.itextpdf.rups.view.itext;
+package com.itextpdf.rups.view.dock;
import com.itextpdf.kernel.pdf.PdfNull;
import com.itextpdf.kernel.pdf.PdfObject;
import com.itextpdf.rups.controller.PdfReaderController;
+import com.itextpdf.rups.controller.RupsInstanceController;
import com.itextpdf.rups.event.RupsEvent;
import com.itextpdf.rups.model.IndirectObjectFactory;
import com.itextpdf.rups.model.ObjectLoader;
@@ -77,18 +78,23 @@ public class XRefTable extends JTable implements JTableAutoModelInterface, Obser
* Creates a JTable visualizing xref table.
*
* @param controller the pdf reader controller
+ * @param loader the ObjectLoader that loads the references
*/
- public XRefTable(PdfReaderController controller) {
+ public XRefTable(PdfReaderController controller, ObjectLoader loader) {
super();
this.controller = controller;
+ objects = loader.getObjects();
setModel(new JTableAutoModel(this));
+ final TableColumn col = getColumnModel().getColumn(0);
+ col.setPreferredWidth(5);
+ repaint();
}
/**
* @see java.util.Observer#update(java.util.Observable, java.lang.Object)
*/
public void update(Observable observable, Object obj) {
- if (observable instanceof PdfReaderController && obj instanceof RupsEvent) {
+ if (observable instanceof RupsInstanceController && obj instanceof RupsEvent) {
final RupsEvent event = (RupsEvent) obj;
switch (event.getType()) {
case RupsEvent.CLOSE_DOCUMENT_EVENT:
diff --git a/src/main/java/com/itextpdf/rups/view/itext/PageEnumerator.java b/src/main/java/com/itextpdf/rups/view/itext/PageEnumerator.java
index 54f641e1..5ae525d2 100644
--- a/src/main/java/com/itextpdf/rups/view/itext/PageEnumerator.java
+++ b/src/main/java/com/itextpdf/rups/view/itext/PageEnumerator.java
@@ -53,7 +53,7 @@ This file is part of the iText (R) project.
import java.util.Enumeration;
import java.util.List;
-class PageEnumerator implements Enumeration {
+public class PageEnumerator implements Enumeration {
protected List pages = new ArrayList<>();
protected TreeNodeFactory factory;
diff --git a/src/test/java/com/itextpdf/rups/controller/RupsControllerTest.java b/src/test/java/com/itextpdf/rups/controller/RupsControllerTest.java
index ddde20ef..18e558fc 100644
--- a/src/test/java/com/itextpdf/rups/controller/RupsControllerTest.java
+++ b/src/test/java/com/itextpdf/rups/controller/RupsControllerTest.java
@@ -106,7 +106,7 @@ public void saveCurrentFile(File file) {
}
@Override
- public void openNewFile(File file, Dimension dimension, boolean readonly) {
+ public void openNewFile(File file, boolean readonly) {
opened = true;
}
}
diff --git a/src/test/java/com/itextpdf/rups/view/RupsTabbedPaneTest.java b/src/test/java/com/itextpdf/rups/view/RupsTabbedPaneTest.java
index 83e04247..ad9e3f1d 100644
--- a/src/test/java/com/itextpdf/rups/view/RupsTabbedPaneTest.java
+++ b/src/test/java/com/itextpdf/rups/view/RupsTabbedPaneTest.java
@@ -80,7 +80,7 @@ public void initializationTest() {
@Test
public void openNullFileTest() {
- this.tabbedPane.openNewFile(null, this.dimension, false);
+ this.tabbedPane.openNewFile(null, false);
JTabbedPane jTabbedPane = (JTabbedPane) this.tabbedPane.getJTabbedPane();
Assert.assertEquals(1, jTabbedPane.getTabCount());
Assert.assertEquals(Language.DEFAULT_TAB_TITLE.getString(), jTabbedPane.getTitleAt(0));
@@ -89,7 +89,7 @@ public void openNullFileTest() {
@Test
public void openNewFileTest() {
File file = new File(INPUT_1);
- this.tabbedPane.openNewFile(file, this.dimension, false);
+ this.tabbedPane.openNewFile(file, false);
JTabbedPane jTabbedPane = (JTabbedPane) this.tabbedPane.getJTabbedPane();
Assert.assertEquals(1, jTabbedPane.getTabCount());
Assert.assertEquals(EXPECTED_TAB_TITLE, jTabbedPane.getTitleAt(0));
@@ -98,9 +98,9 @@ public void openNewFileTest() {
@Test
public void openTwoFiles() {
File file = new File(INPUT_1);
- this.tabbedPane.openNewFile(file, this.dimension, false);
+ this.tabbedPane.openNewFile(file, false);
File file2 = new File(INPUT_2);
- this.tabbedPane.openNewFile(file2, this.dimension, false);
+ this.tabbedPane.openNewFile(file2, false);
JTabbedPane jTabbedPane = (JTabbedPane) this.tabbedPane.getJTabbedPane();
Assert.assertEquals(2, jTabbedPane.getTabCount());
Assert.assertEquals(EXPECTED_TAB_TITLE, jTabbedPane.getTitleAt(0));
@@ -110,9 +110,9 @@ public void openTwoFiles() {
@Test
public void openTwoFilesAndCloseAllTest() {
File file = new File(INPUT_1);
- this.tabbedPane.openNewFile(file, this.dimension, false);
+ this.tabbedPane.openNewFile(file, false);
File file2 = new File(INPUT_2);
- this.tabbedPane.openNewFile(file2, this.dimension, false);
+ this.tabbedPane.openNewFile(file2, false);
this.tabbedPane.closeCurrentFile();
this.tabbedPane.closeCurrentFile();
JTabbedPane jTabbedPane = (JTabbedPane) this.tabbedPane.getJTabbedPane();
@@ -127,7 +127,7 @@ public void isFileDuplicateTest() {
RupsConfiguration.INSTANCE.saveConfiguration();
File file = new File(INPUT_1);
- this.tabbedPane.openNewFile(file, this.dimension, false);
+ this.tabbedPane.openNewFile(file, false);
boolean isAlreadyOpened = this.tabbedPane.isFileAlreadyOpen(file);
RupsConfiguration.INSTANCE.setOpenDuplicateFiles(originalValue);