mirror of
https://gitlab.kit.edu/uskyk/typicalc.git
synced 2024-11-08 10:20:41 +00:00
Added copy buttons to share dialog
This commit is contained in:
parent
0b5016da4f
commit
526ed46c67
@ -27,3 +27,23 @@
|
||||
position: absolute;
|
||||
bottom: 2.1em;
|
||||
}
|
||||
|
||||
#url-area-layout {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#package-area-tree-layout {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#package-area-unification-layout {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#latex-area-tree-layout {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#latex-area-unification-layout {
|
||||
width: 100%;
|
||||
}
|
||||
|
@ -1,12 +1,15 @@
|
||||
package edu.kit.typicalc.view.content.typeinferencecontent;
|
||||
|
||||
import com.vaadin.flow.component.UI;
|
||||
import com.vaadin.flow.component.button.Button;
|
||||
import com.vaadin.flow.component.dependency.CssImport;
|
||||
import com.vaadin.flow.component.dependency.JsModule;
|
||||
import com.vaadin.flow.component.dialog.Dialog;
|
||||
import com.vaadin.flow.component.html.H3;
|
||||
import com.vaadin.flow.component.icon.Icon;
|
||||
import com.vaadin.flow.component.icon.VaadinIcon;
|
||||
import com.vaadin.flow.component.notification.Notification;
|
||||
import com.vaadin.flow.component.notification.NotificationVariant;
|
||||
import com.vaadin.flow.component.orderedlayout.HorizontalLayout;
|
||||
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
|
||||
import com.vaadin.flow.component.textfield.TextArea;
|
||||
@ -29,6 +32,11 @@ public class ShareDialog extends Dialog implements LocaleChangeObserver {
|
||||
private static final String LAYOUT_ID = "share-dialog-layout";
|
||||
private static final String FIELD_CLASS = "share-dialog-field";
|
||||
private static final String CLOSE_ICON_ID = "closeIcon";
|
||||
private static final String URL_AREA_LAYOUT_ID = "url-area-layout";
|
||||
private static final String PACKAGE_AREA_TREE_LAYOUT_ID = "package-area-tree-layout";
|
||||
private static final String PACKAGE_AREA_UNIFICATION_LAYOUT_ID = "package-area-unification-layout";
|
||||
private static final String LATEX_AREA_TREE_LAYOUT_ID = "latex-area-tree-layout";
|
||||
private static final String LATEX_AREA_UNIFICATION_LAYOUT_ID = "latex-area-unification-layout";
|
||||
|
||||
private static final String RIGHT_ARROW_WHITE = "\\\\rightwhitearrow";
|
||||
private static final String MATH_OPEN = "\\[";
|
||||
@ -47,6 +55,7 @@ public class ShareDialog extends Dialog implements LocaleChangeObserver {
|
||||
*
|
||||
* @param url a permalink to share with other users
|
||||
* @param latexCodeTree LaTeX code for the tree for users to copy into their own LaTeX document(s)
|
||||
* @param latexCodeUnification LaTeX code for the unification for users to copy into their own LaTeX document(s)
|
||||
*/
|
||||
public ShareDialog(String url, String latexCodeTree, String latexCodeUnification) {
|
||||
HorizontalLayout headingLayout = new HorizontalLayout();
|
||||
@ -75,7 +84,31 @@ public class ShareDialog extends Dialog implements LocaleChangeObserver {
|
||||
|
||||
setReadOnly();
|
||||
|
||||
layout.add(urlField, packageAreaTree, latexAreaTree, packageAreaUnification, latexAreaUnification);
|
||||
Button copyButtonUrl = makeCopyButton(urlField.getValue());
|
||||
Button copyButtonPackageAreaTree = makeCopyButton(packageAreaTree.getValue());
|
||||
Button copyButtonPackageAreaUnification = makeCopyButton(packageAreaUnification.getValue());
|
||||
Button copyButtonLatexAreaTree = makeCopyButton(latexAreaTree.getValue());
|
||||
Button copyButtonLatexAreaUnification = makeCopyButton(latexAreaUnification.getValue());
|
||||
|
||||
HorizontalLayout urlLayout = new HorizontalLayout();
|
||||
urlLayout.setId(URL_AREA_LAYOUT_ID);
|
||||
HorizontalLayout packageAreaTreeLayout = new HorizontalLayout();
|
||||
packageAreaTreeLayout.setId(PACKAGE_AREA_TREE_LAYOUT_ID);
|
||||
HorizontalLayout latexAreaTreeLayout = new HorizontalLayout();
|
||||
latexAreaTreeLayout.setId(LATEX_AREA_TREE_LAYOUT_ID);
|
||||
HorizontalLayout packageAreaUnificationLayout = new HorizontalLayout();
|
||||
packageAreaUnificationLayout.setId(PACKAGE_AREA_UNIFICATION_LAYOUT_ID);
|
||||
HorizontalLayout latexAreaUnificationLayout = new HorizontalLayout();
|
||||
latexAreaUnificationLayout.setId(LATEX_AREA_UNIFICATION_LAYOUT_ID);
|
||||
|
||||
urlLayout.add(urlField, copyButtonUrl);
|
||||
packageAreaTreeLayout.add(packageAreaTree, copyButtonPackageAreaTree);
|
||||
latexAreaTreeLayout.add(latexAreaTree, copyButtonLatexAreaTree);
|
||||
packageAreaUnificationLayout.add(packageAreaUnification, copyButtonPackageAreaUnification);
|
||||
latexAreaUnificationLayout.add(latexAreaUnification, copyButtonLatexAreaUnification);
|
||||
|
||||
layout.add(urlLayout, packageAreaTreeLayout, latexAreaTreeLayout, packageAreaUnificationLayout,
|
||||
latexAreaUnificationLayout);
|
||||
|
||||
add(headingLayout, layout);
|
||||
}
|
||||
@ -112,4 +145,13 @@ public class ShareDialog extends Dialog implements LocaleChangeObserver {
|
||||
packageAreaUnification.setReadOnly(true);
|
||||
latexAreaUnification.setReadOnly(true);
|
||||
}
|
||||
|
||||
private Button makeCopyButton(String value) {
|
||||
Button newButton = new Button(new Icon(VaadinIcon.CLIPBOARD));
|
||||
newButton.addClickListener(event -> {
|
||||
UI.getCurrent().getPage().executeJs("window.copyToClipboard($0)", value);
|
||||
Notification.show(getTranslation("root.copied")).addThemeVariants(NotificationVariant.LUMO_PRIMARY);
|
||||
});
|
||||
return newButton;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user