Simplify project structure
[gpl/argeo-suite.git] / publishing / org.argeo.publishing.ui / src / org / argeo / docbook / ui / DbkVideo.java
diff --git a/publishing/org.argeo.publishing.ui/src/org/argeo/docbook/ui/DbkVideo.java b/publishing/org.argeo.publishing.ui/src/org/argeo/docbook/ui/DbkVideo.java
deleted file mode 100644 (file)
index 5c3d057..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-package org.argeo.docbook.ui;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.List;
-import java.util.Map;
-
-import javax.jcr.Item;
-import javax.jcr.Node;
-import javax.jcr.RepositoryException;
-
-import org.argeo.cms.ui.util.CmsUiUtils;
-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.StyledControl;
-import org.argeo.docbook.DbkAttr;
-import org.argeo.docbook.DbkType;
-import org.argeo.docbook.DbkUtils;
-import org.argeo.eclipse.ui.Selected;
-import org.argeo.jcr.Jcr;
-import org.argeo.jcr.JcrException;
-import org.argeo.naming.NamingUtils;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Text;
-
-public class DbkVideo extends StyledControl implements SectionPart, NodePart {
-       private static final long serialVersionUID = -8753232181570351880L;
-       private Section section;
-
-       private int width = 640;
-       private int height = 360;
-
-       private boolean editable;
-
-       public DbkVideo(Composite parent, int style, Node node) {
-               this(Section.findSection(parent), parent, style, node);
-       }
-
-       DbkVideo(Section section, Composite parent, int style, Node node) {
-               super(parent, style, node);
-               editable = !(SWT.READ_ONLY == (style & SWT.READ_ONLY));
-               this.section = section;
-               setStyle(DbkType.videoobject.name());
-       }
-
-       @Override
-       protected Control createControl(Composite box, String style) {
-               Node mediaobject = getNode();
-               Composite wrapper = new Composite(box, SWT.NONE);
-               wrapper.setLayout(CmsUiUtils.noSpaceGridLayout());
-
-               Composite browserC = new Composite(wrapper, SWT.NONE);
-               browserC.setLayout(CmsUiUtils.noSpaceGridLayout());
-               GridData gd = new GridData(SWT.CENTER, SWT.FILL, true, true);
-               gd.widthHint = getWidth();
-               gd.heightHint = getHeight();
-               browserC.setLayoutData(gd);
-//             wrapper.setLayoutData(CmsUiUtils.fillAll());
-               Browser browser = new Browser(browserC, SWT.NONE);
-
-               if (editable) {
-                       Composite editor = new Composite(wrapper, SWT.BORDER);
-                       editor.setLayout(new GridLayout(3, false));
-                       editor.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-                       String fileref = DbkUtils.getMediaFileref(mediaobject);
-                       Text text = new Text(editor, SWT.SINGLE);
-                       if (fileref != null)
-                               text.setText(fileref);
-                       else
-                               text.setMessage("Embed URL of the video");
-                       text.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
-                       Button updateB = new Button(editor, SWT.FLAT);
-                       updateB.setText("Update");
-                       updateB.addSelectionListener(new Selected() {
-
-                               @Override
-                               public void widgetSelected(SelectionEvent e) {
-                                       try {
-                                               Node videodata = mediaobject.getNode(DbkType.videoobject.get())
-                                                               .getNode(DbkType.videodata.get());
-                                               String txt = text.getText();
-                                               URI uri;
-                                               try {
-                                                       uri = new URI(txt);
-                                               } catch (URISyntaxException e1) {
-                                                       text.setText("");
-                                                       text.setMessage("Invalid URL");
-                                                       return;
-                                               }
-
-                                               // Transform watch URL in embed
-                                               // YouTube
-                                               String videoId = null;
-                                               if ("www.youtube.com".equals(uri.getHost()) || "youtube.com".equals(uri.getHost())
-                                                               || "youtu.be".equals(uri.getHost())) {
-                                                       if ("www.youtube.com".equals(uri.getHost()) || "youtube.com".equals(uri.getHost())) {
-                                                               if ("/watch".equals(uri.getPath())) {
-                                                                       Map<String, List<String>> map = NamingUtils.queryToMap(uri);
-                                                                       videoId = map.get("v").get(0);
-                                                               }
-                                                       } else if ("youtu.be".equals(uri.getHost())) {
-                                                               videoId = uri.getPath().substring(1);
-                                                       }
-                                                       if (videoId != null) {
-                                                               try {
-                                                                       uri = new URI("https://www.youtube.com/embed/" + videoId);
-                                                                       text.setText(uri.toString());
-                                                               } catch (URISyntaxException e1) {
-                                                                       throw new IllegalStateException(e1);
-                                                               }
-                                                       }
-                                               }
-
-                                               // Vimeo
-                                               if ("vimeo.com".equals(uri.getHost())) {
-                                                       videoId = uri.getPath().substring(1);
-                                                       if (videoId != null) {
-                                                               try {
-                                                                       uri = new URI("https://player.vimeo.com/video/" + videoId);
-                                                                       text.setText(uri.toString());
-                                                               } catch (URISyntaxException e1) {
-                                                                       throw new IllegalStateException(e1);
-                                                               }
-                                                       }
-                                               }
-
-                                               videodata.setProperty(DbkAttr.fileref.name(), uri.toString());
-                                               // TODO better integrate it in the edition lifecycle
-                                               videodata.getSession().save();
-                                               load(browser);
-                                       } catch (RepositoryException e1) {
-                                               throw new JcrException("Cannot update " + mediaobject, e1);
-                                       }
-
-                               }
-                       });
-
-                       Button deleteB = new Button(editor, SWT.FLAT);
-                       deleteB.setText("Delete");
-                       deleteB.addSelectionListener(new Selected() {
-
-                               @Override
-                               public void widgetSelected(SelectionEvent e) {
-                                       try {
-                                               mediaobject.remove();
-                                               mediaobject.getSession().save();
-                                               dispose();
-                                               getSection().getParent().layout(true, true);
-                                       } catch (RepositoryException e1) {
-                                               throw new JcrException("Cannot update " + mediaobject, e1);
-                                       }
-
-                               }
-                       });
-               }
-
-               // TODO caption
-               return browser;
-       }
-
-       public void load(Control control) {
-               try {
-                       if (control instanceof Browser) {
-                               Browser browser = (Browser) control;
-                               getNode().getSession();
-                               String fileref = DbkUtils.getMediaFileref(getNode());
-                               if (fileref != null) {
-                                       // TODO manage self-hosted videos
-                                       // TODO for YouTube videos, check whether the URL starts with
-                                       // https://www.youtube.com/embed/ and not https://www.youtube.com/watch?v=
-                                       StringBuilder html = new StringBuilder();
-                                       html.append(
-                                                       "<iframe frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture\" allowfullscreen=\"true\"");
-                                       // TODO make size configurable
-                                       html.append("width=\"").append(width).append("\" height=\"").append(height).append("\" ");
-                                       html.append("src=\"").append(fileref).append("\" ");
-                                       html.append("/>");
-                                       browser.setText(html.toString());
-                               }
-                       }
-               } catch (RepositoryException e) {
-                       throw new JcrException("Cannot retrieve src for video " + getNode(), e);
-               }
-       }
-
-       @Override
-       protected void setContainerLayoutData(Composite composite) {
-               composite.setLayoutData(new GridData(SWT.CENTER, SWT.FILL, true, true));
-       }
-
-       @Override
-       protected void setControlLayoutData(Control control) {
-               control.setLayoutData(CmsUiUtils.fillAll());
-       }
-
-       @Override
-       public Item getItem() throws RepositoryException {
-               return getNode();
-       }
-
-       @Override
-       public String getPartId() {
-               return getNodeId();
-       }
-
-       @Override
-       public Section getSection() {
-               return section;
-       }
-
-       public int getWidth() {
-               return width;
-       }
-
-       public int getHeight() {
-               return height;
-       }
-
-}