X-Git-Url: https://git.argeo.org/?p=gpl%2Fargeo-suite.git;a=blobdiff_plain;f=org.argeo.publishing.ui%2Fsrc%2Forg%2Fargeo%2Fdocbook%2Fui%2FDbkVideo.java;fp=org.argeo.publishing.ui%2Fsrc%2Forg%2Fargeo%2Fdocbook%2Fui%2FDbkVideo.java;h=0000000000000000000000000000000000000000;hp=5c3d0577d5da29b9ed168422487f7a0fe69213f0;hb=6e56ffa34cb02ab04d028423aea342e3dfed4358;hpb=c285180bece610b2c2921d44fe14b6dde2123efa diff --git a/org.argeo.publishing.ui/src/org/argeo/docbook/ui/DbkVideo.java b/org.argeo.publishing.ui/src/org/argeo/docbook/ui/DbkVideo.java deleted file mode 100644 index 5c3d057..0000000 --- a/org.argeo.publishing.ui/src/org/argeo/docbook/ui/DbkVideo.java +++ /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> 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( - "