X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=publishing%2Forg.argeo.publishing.ui%2Fsrc%2Forg%2Fargeo%2Fdocbook%2Fui%2FDbkContextMenu.java;fp=publishing%2Forg.argeo.publishing.ui%2Fsrc%2Forg%2Fargeo%2Fdocbook%2Fui%2FDbkContextMenu.java;h=0000000000000000000000000000000000000000;hp=6046bf2c9ce5c537761c43101131dff5ba789268;hb=3440f51df3e4c015972c7b6a0efb3ce16188b89b;hpb=752a7b2614895002a3d184be166ef4162caf0d05 diff --git a/publishing/org.argeo.publishing.ui/src/org/argeo/docbook/ui/DbkContextMenu.java b/publishing/org.argeo.publishing.ui/src/org/argeo/docbook/ui/DbkContextMenu.java deleted file mode 100644 index 6046bf2..0000000 --- a/publishing/org.argeo.publishing.ui/src/org/argeo/docbook/ui/DbkContextMenu.java +++ /dev/null @@ -1,230 +0,0 @@ -package org.argeo.docbook.ui; - -import java.util.ArrayList; -import java.util.List; - -import javax.jcr.Node; - -import org.argeo.cms.ui.CmsEditable; -import org.argeo.cms.ui.util.CmsUiUtils; -import org.argeo.cms.ui.viewers.EditablePart; -import org.argeo.cms.ui.viewers.NodePart; -import org.argeo.cms.ui.viewers.Section; -import org.argeo.cms.ui.viewers.SectionPart; -import org.argeo.cms.ui.widgets.EditableText; -import org.argeo.cms.ui.widgets.Img; -import org.argeo.docbook.DbkMsg; -import org.argeo.docbook.DbkUtils; -import org.argeo.eclipse.ui.MouseDown; -import org.argeo.jcr.Jcr; -import org.eclipse.rap.rwt.RWT; -import org.eclipse.swt.SWT; -import org.eclipse.swt.events.MouseAdapter; -import org.eclipse.swt.events.MouseEvent; -import org.eclipse.swt.events.ShellEvent; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Shell; - -/** Dialog to edit a text part. */ -class DbkContextMenu { - private final AbstractDbkViewer textViewer; - - private Shell shell; - - DbkContextMenu(AbstractDbkViewer textViewer, Shell parentShell) { -// shell = new Shell(display, SWT.NO_TRIM | SWT.BORDER | SWT.ON_TOP); - shell = new Shell(parentShell, SWT.BORDER); -// super(display, SWT.NO_TRIM | SWT.BORDER | SWT.ON_TOP); - this.textViewer = textViewer; - shell.setLayout(new GridLayout()); - // shell.setData(RWT.CUSTOM_VARIANT, TEXT_STYLED_TOOLS_DIALOG); - - shell.addShellListener(new ToolsShellListener()); - } - - void show(EditablePart editablePart, Point location, List availableStyles) { - if (shell.isVisible()) - shell.setVisible(false); - CmsUiUtils.clear(shell); - Composite parent = shell; - CmsEditable cmsEditable = textViewer.getCmsEditable(); -// if (availableStyles.isEmpty()) -// return; - - if (editablePart instanceof Paragraph) { - Paragraph paragraph = (Paragraph) editablePart; - deletePartB(parent, DbkMsg.deleteParagraph.lead(), paragraph); - insertMediaB(parent, paragraph); - - } else if (editablePart instanceof Img) { - Img img = (Img) editablePart; - deletePartB(parent, DbkMsg.deleteMedia.lead(), img); - insertMediaB(parent, img); - insertParagraphB(parent, DbkMsg.insertParagraph.lead(), img); - - } else if (editablePart instanceof DbkSectionTitle) { - DbkSectionTitle sectionTitle = (DbkSectionTitle) editablePart; - TextSection section = sectionTitle.getSection(); - if (!section.isTitleReadOnly()) { - Label deleteB = new Label(shell, SWT.NONE); - deleteB.setText(DbkMsg.deleteSection.lead()); - deleteB.addMouseListener((MouseDown) (e) -> { - textViewer.deleteSection(section); - hide(); - }); - } - insertMediaB(parent, sectionTitle.getSection(), sectionTitle); - } - - StyledToolMouseListener stml = new StyledToolMouseListener(editablePart); - List styleButtons = new ArrayList(); - if (cmsEditable.isEditing()) { - for (String style : availableStyles) { - StyleButton styleButton = new StyleButton(shell, SWT.WRAP); - if (!"".equals(style)) - styleButton.setStyle(style); - else - styleButton.setStyle(null); - styleButton.setMouseListener(stml); - styleButtons.add(styleButton); - } - } else if (cmsEditable.canEdit()) { - // Edit -// Label editButton = new Label(shell, SWT.NONE); -// editButton.setText("Edit"); -// editButton.addMouseListener(stml); - } - - if (editablePart instanceof Paragraph) { - final int size = 32; - String text = textViewer.getRawParagraphText((Paragraph) editablePart); - String textToShow = text.length() > size ? text.substring(0, size - 3) + "..." : text; - for (StyleButton styleButton : styleButtons) { - styleButton.setText((styleButton.style == null ? "default" : styleButton.style) + " : " + textToShow); - } - } - - shell.pack(); - shell.layout(); - if (editablePart instanceof Control) { - int height = shell.getSize().y; - int parentShellHeight = shell.getShell().getSize().y; - if ((location.y + height) < parentShellHeight) { - shell.setLocation(((Control) editablePart).toDisplay(location.x, location.y)); - } else { - shell.setLocation(((Control) editablePart).toDisplay(location.x, location.y - parentShellHeight)); - } - } - - if (shell.getChildren().length != 0) - shell.open(); - } - - void hide() { - shell.setVisible(false); - } - - protected void insertMediaB(Composite parent, SectionPart sectionPart) { - insertMediaB(parent, sectionPart.getSection(), sectionPart); - } - - protected void insertMediaB(Composite parent, Section section, NodePart nodePart) { - Label insertPictureB = new Label(parent, SWT.NONE); - insertPictureB.setText(DbkMsg.insertPicture.lead()); - insertPictureB.addMouseListener((MouseDown) (e) -> { - Node newNode = DbkUtils.insertImageAfter(nodePart.getNode()); - Jcr.save(newNode); - textViewer.insertPart(section, newNode); - hide(); - }); - Label insertVideoB = new Label(parent, SWT.NONE); - insertVideoB.setText(DbkMsg.insertVideo.lead()); - insertVideoB.addMouseListener((MouseDown) (e) -> { - Node newNode = DbkUtils.insertVideoAfter(nodePart.getNode()); - Jcr.save(newNode); - textViewer.insertPart(section, newNode); - hide(); - }); - - } - - protected void insertParagraphB(Composite parent, String msg, SectionPart sectionPart) { - Label insertMediaB = new Label(parent, SWT.NONE); - insertMediaB.setText(msg); - insertMediaB.addMouseListener((MouseDown) (e) -> { - textViewer.addParagraph(sectionPart, null); - hide(); - }); - } - - protected void deletePartB(Composite parent, String msg, SectionPart sectionPart) { - Label deleteB = new Label(shell, SWT.NONE); - deleteB.setText(msg); - deleteB.addMouseListener((MouseDown) (e) -> { - textViewer.deletePart(sectionPart); - hide(); - }); - } - - class StyleButton extends EditableText { - private static final long serialVersionUID = 7731102609123946115L; - - String style; - - public StyleButton(Composite parent, int style) { - super(parent, style); - } - - @Override - public void setStyle(String style) { - this.style = style; - super.setStyle(style); - } - -// private Label label; -// -// public StyleButton(Composite parent, int swtStyle) { -// super(parent, SWT.NONE); -// setLayout(new GridLayout()); -// label = new Label(this, swtStyle); -// } -// -// public Label getLabel() { -// return label; -// } - - } - - class StyledToolMouseListener extends MouseAdapter { - private static final long serialVersionUID = 8516297091549329043L; - private EditablePart editablePart; - - public StyledToolMouseListener(EditablePart editablePart) { - super(); - this.editablePart = editablePart; - } - - @Override - public void mouseDown(MouseEvent e) { - // TODO make it more robust. - Label sb = (Label) e.getSource(); - Object style = sb.getData(RWT.CUSTOM_VARIANT); - textViewer.setParagraphStyle((Paragraph) editablePart, style == null ? null : style.toString()); - hide(); - } - } - - class ToolsShellListener extends org.eclipse.swt.events.ShellAdapter { - private static final long serialVersionUID = 8432350564023247241L; - - @Override - public void shellDeactivated(ShellEvent e) { - hide(); - } - - } -}