Skip to content
Snippets Groups Projects
Commit 5f1df56d authored by aburn's avatar aburn
Browse files

Removed cover editor dependency on book editor

parent d16c3115
Branches
No related merge requests found
......@@ -12,113 +12,117 @@ In this respect, the user's attention is drawn to the risks associated with load
The fact that you are presently reading this means that you have had knowledge of the CeCILL license and that you accept its terms.
*/
package org.interreg.docexplore.manuscript.app.editors;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import org.interreg.docexplore.gui.ErrorHandler;
import org.interreg.docexplore.gui.LooseGridLayout;
package org.interreg.docexplore.manuscript.app.editors;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import org.interreg.docexplore.gui.ErrorHandler;
import org.interreg.docexplore.gui.LooseGridLayout;
import org.interreg.docexplore.internationalization.Lang;
import org.interreg.docexplore.manuscript.CoverUtils.Part;
import org.interreg.docexplore.manuscript.DocExploreDataLink;
import org.interreg.docexplore.manuscript.MetaData;
import org.interreg.docexplore.manuscript.actions.ActionProvider;
import org.interreg.docexplore.manuscript.actions.AddMetaDataAction;
import org.interreg.docexplore.manuscript.actions.DeleteMetaDataAction;
import org.interreg.docexplore.manuscript.Book;
import org.interreg.docexplore.manuscript.CoverUtils.Part;
import org.interreg.docexplore.manuscript.DocExploreDataLink;
import org.interreg.docexplore.manuscript.MetaData;
import org.interreg.docexplore.manuscript.actions.ActionProvider;
import org.interreg.docexplore.manuscript.actions.AddMetaDataAction;
import org.interreg.docexplore.manuscript.actions.DeleteMetaDataAction;
import org.interreg.docexplore.manuscript.app.DocumentEvents;
import org.interreg.docexplore.util.history.ReversibleAction;
@SuppressWarnings("serial")
public class BookCoverEditor extends JPanel
{
BookEditor bookEditor;
BookCoverIcon [] parts = new BookCoverIcon [Part.values().length];
boolean readOnly = false;
public BookCoverEditor(BookEditor bookEditor, int iconSize)
{
super(new LooseGridLayout(3, 5, 10, 10, false, false, SwingConstants.CENTER, SwingConstants.CENTER, false, false));
this.bookEditor = bookEditor;
add(buildLabel(""));
add(buildLabel(Lang.s("coverFront")));
add(buildLabel(Lang.s("coverInnerFront")));
add(buildLabel(Lang.s("coverInnerBack")));
add(buildLabel(Lang.s("coverBack")));
add(buildLabel(Lang.s("coverOpaque")));
add(buildIcon(iconSize, Part.Front));
add(buildIcon(iconSize, Part.FrontInner));
add(buildIcon(iconSize, Part.BackInner));
add(buildIcon(iconSize, Part.Back));
add(buildLabel(Lang.s("coverTransparent")));
add(buildIcon(iconSize, Part.FrontTrans));
add(buildIcon(iconSize, Part.FrontInnerTrans));
add(buildIcon(iconSize, Part.BackInnerTrans));
add(buildIcon(iconSize, Part.BackTrans));
setOpaque(false);
}
public void setReadOnly(boolean b)
{
this.readOnly = b;
for (int i=0;i<parts.length;i++)
parts[i].dropsEnabled = !b;
}
private JLabel buildLabel(String text)
{
return new JLabel(text);
}
private BookCoverIcon buildIcon(int size, Part part)
{
return parts[part.ordinal()] = new BookCoverIcon(this, size, part);
}
void setPart(MetaData part, int index) throws Throwable
{
DocExploreDataLink link = bookEditor.docEditor.host.getAppHost().getLink();
List<MetaData> parts = bookEditor.docEditor.book.getMetaDataListForKey(Part.values()[index].getKey(link));
ActionProvider provider = link.actionProvider();
AddMetaDataAction add = part == null ? null : provider.addMetaData(bookEditor.docEditor.book, part);
DeleteMetaDataAction delete = parts.isEmpty() ? null : provider.deleteMetaData(bookEditor.docEditor.book, parts.get(0));
bookEditor.docEditor.host.getAppHost().historyManager.submit(new ReversibleAction()
{
@Override public void doAction() throws Exception
{
if (delete != null) delete.doAction();
if (add != null) add.doAction();
DocumentEvents.broadcastChanged(bookEditor.docEditor.host.getAppHost(), bookEditor.docEditor.book);
}
@Override public void undoAction() throws Exception
{
if (add != null) add.undoAction();
if (delete != null) delete.undoAction();
DocumentEvents.broadcastChanged(bookEditor.docEditor.host.getAppHost(), bookEditor.docEditor.book);
}
@Override public String description() {return part != null ? Lang.s("addCover") : Lang.s("deleteCover");}
});
}
public void refresh()
{
try
{
for (int i=0;i<parts.length;i++)
{
MetaData data = parts[i].getData();
if (data == null)
parts[i].label.setIcon(null);
else parts[i].label.setIcon(new ImageIcon(DocExploreDataLink.getImageMini(data)));
}
}
catch (Exception e) {ErrorHandler.defaultHandler.submit(e);}
}
}
import org.interreg.docexplore.manuscript.app.ManuscriptAppHost;
import org.interreg.docexplore.util.history.ReversibleAction;
@SuppressWarnings("serial")
public class BookCoverEditor extends JPanel
{
Book book;
ManuscriptAppHost host;
BookCoverIcon [] parts = new BookCoverIcon [Part.values().length];
boolean readOnly = false;
public BookCoverEditor(Book book, ManuscriptAppHost host, int iconSize)
{
super(new LooseGridLayout(3, 5, 10, 10, false, false, SwingConstants.CENTER, SwingConstants.CENTER, false, false));
this.book = book;
this.host = host;
add(buildLabel(""));
add(buildLabel(Lang.s("coverFront")));
add(buildLabel(Lang.s("coverInnerFront")));
add(buildLabel(Lang.s("coverInnerBack")));
add(buildLabel(Lang.s("coverBack")));
add(buildLabel(Lang.s("coverOpaque")));
add(buildIcon(iconSize, Part.Front));
add(buildIcon(iconSize, Part.FrontInner));
add(buildIcon(iconSize, Part.BackInner));
add(buildIcon(iconSize, Part.Back));
add(buildLabel(Lang.s("coverTransparent")));
add(buildIcon(iconSize, Part.FrontTrans));
add(buildIcon(iconSize, Part.FrontInnerTrans));
add(buildIcon(iconSize, Part.BackInnerTrans));
add(buildIcon(iconSize, Part.BackTrans));
setOpaque(false);
}
public void setReadOnly(boolean b)
{
this.readOnly = b;
for (int i=0;i<parts.length;i++)
parts[i].dropsEnabled = !b;
}
private JLabel buildLabel(String text)
{
return new JLabel(text);
}
private BookCoverIcon buildIcon(int size, Part part)
{
return parts[part.ordinal()] = new BookCoverIcon(this, size, part);
}
void setPart(MetaData part, int index) throws Throwable
{
DocExploreDataLink link = host.getLink();
List<MetaData> parts = book.getMetaDataListForKey(Part.values()[index].getKey(link));
ActionProvider provider = link.actionProvider();
AddMetaDataAction add = part == null ? null : provider.addMetaData(book, part);
DeleteMetaDataAction delete = parts.isEmpty() ? null : provider.deleteMetaData(book, parts.get(0));
host.historyManager.submit(new ReversibleAction()
{
@Override public void doAction() throws Exception
{
if (delete != null) delete.doAction();
if (add != null) add.doAction();
DocumentEvents.broadcastChanged(host, book);
}
@Override public void undoAction() throws Exception
{
if (add != null) add.undoAction();
if (delete != null) delete.undoAction();
DocumentEvents.broadcastChanged(host, book);
}
@Override public String description() {return part != null ? Lang.s("addCover") : Lang.s("deleteCover");}
});
}
public void refresh()
{
try
{
for (int i=0;i<parts.length;i++)
{
MetaData data = parts[i].getData();
if (data == null)
parts[i].label.setIcon(null);
else parts[i].label.setIcon(new ImageIcon(DocExploreDataLink.getImageMini(data)));
}
}
catch (Exception e) {ErrorHandler.defaultHandler.submit(e);}
}
}
......@@ -72,14 +72,14 @@ public class BookCoverIcon extends DragDropPanel
{
MetaData data = getData();
if (data != null)
coverEditor.bookEditor.docEditor.host.onDocumentEditorRequest(data, coverEditor.bookEditor.docEditor.book);
coverEditor.host.addDocument(data, coverEditor.book);
else
{
FileDialogs files = DocExploreTool.getFileDialogs();
File file = files.openFile(DocExploreTool.getImagesCategory());
if (file == null)
return;
DocExploreDataLink link = coverEditor.bookEditor.docEditor.host.getAppHost().getLink();
DocExploreDataLink link = coverEditor.host.getLink();
MetaData part = new MetaData(link, BookCoverIcon.this.part.getKey(link), MetaData.imageType, new FileInputStream(file));
coverEditor.setPart(part, BookCoverIcon.this.part.ordinal());
}
......@@ -91,9 +91,9 @@ public class BookCoverIcon extends DragDropPanel
public MetaData getData() throws Exception
{
DocExploreDataLink link = coverEditor.bookEditor.docEditor.host.getAppHost().getLink();
DocExploreDataLink link = coverEditor.host.getLink();
MetaDataKey key = part.getKey(link);
List<MetaData> parts = coverEditor.bookEditor.docEditor.book.getMetaDataListForKey(key);
List<MetaData> parts = coverEditor.book.getMetaDataListForKey(key);
if (parts.isEmpty())
return null;
else return parts.get(0);
......@@ -104,8 +104,8 @@ public class BookCoverIcon extends DragDropPanel
{
try
{
DocExploreDataLink link = coverEditor.bookEditor.docEditor.host.getAppHost().getLink();
List<MetaData> parts = coverEditor.bookEditor.docEditor.book.getMetaDataListForKey(part.getKey(link));
DocExploreDataLink link = coverEditor.host.getLink();
List<MetaData> parts = coverEditor.book.getMetaDataListForKey(part.getKey(link));
if (!parts.isEmpty())
return (Collection)parts;
}
......@@ -122,7 +122,7 @@ public class BookCoverIcon extends DragDropPanel
@Override public void onIncomingDrop(Collection<Object> data, DragDropPanel source, int x, int y)
{
setBorder(BorderFactory.createLineBorder(GuiConstants.borderColor, 1));
DocExploreDataLink link = coverEditor.bookEditor.docEditor.host.getAppHost().getLink();
DocExploreDataLink link = coverEditor.host.getLink();
for (Object object : data)
{
if (object instanceof File) try
......@@ -152,8 +152,8 @@ public class BookCoverIcon extends DragDropPanel
{
DocExploreDataLink sourceLink = ((CollectionBooksEditor)((IconPanelElement)source).editor).collectionEditor.host.getAppHost().getLink();
MetaData [] images = CoverUtils.getCoverImages(sourceLink, (Book)object);
coverEditor.bookEditor.docEditor.host.getAppHost().historyManager.submit(
CoverUtils.importCover(coverEditor.bookEditor.docEditor.host.getAppHost(), coverEditor.bookEditor.docEditor.book, images));
coverEditor.host.historyManager.submit(
CoverUtils.importCover(coverEditor.host, coverEditor.book, images));
break;
}
catch (Throwable e) {ErrorHandler.defaultHandler.submit(e);}
......
......@@ -51,7 +51,7 @@ public class BookEditor extends JPanel implements ConfigurationEditor
coverPanel.setOpaque(false);
coverPanel.add(new JLabel("<html><b>"+Lang.s("cover")+"</b></html>"));
coverPanel.add(docEditor.host.getAppHost().helpPanel.createHelpMessageButton(Lang.s("helpCover")));
coverPanel.add(this.cover = new BookCoverEditor(this, 128));
coverPanel.add(this.cover = new BookCoverEditor(bookEditor.book, bookEditor.host.getAppHost(), 128));
add(coverPanel, BorderLayout.NORTH);
setBackground(Color.white);
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment