diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/.gitignore b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/.gitignore deleted file mode 100644 index 4b06665..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -/target/ -/.idea/ -*.iml - -.DS_Store -Thumbs.db - -/storage/[Tt]emp/ -/storage/GroupDocs.annotation*.xml -*.lic -/.settings/ -*.classpath -*.project diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/README.md b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/README.md deleted file mode 100644 index fef65b4..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/README.md +++ /dev/null @@ -1,37 +0,0 @@ -# GroupDocs.Annotation for Java using Servlets - -This application allows user to view and annotate a document in a web browser. Users can view document pages in image form and draw annotations on it. The annotated file can be downloaded later. - -# Pre-requisites - -* Java Development Kit (JDK) 8 -* Maven 3 -* Any latest browsers (Firefox, Chrome, IE9 or greater, Safari etc. ) - -# How to Run Application - -It is assumed that maven is installed and configured in your system path. You can open the project in your favorite IDE like NetBeans, Eclipse, and IntelliJ IDEA. To run the project from command line, follow the given steps. - -1. Inside the project folder, run `mvn jetty:run` command. -3. Go to browser and type "http://localhost:8080/". - -To use another application server like Tomcat, use the `mvn package` command to build a WAR file for deployment. - -You may find following resources helpful: - -1. Learn how to [install and configure][1] Maven. -2. Maven [support][2] for NetBeans. -3. Maven [support][3] for IntelliJ IDEA. -4. Maven [support][4] for Eclipse IDE. - -# Apply License - -* Apply for a [temporary license][5] for free. -* Download the license file to your computer. -* Set the location of license file in `src/main/resources/project.properties` file. - -[1]: http://www.tutorialspoint.com/maven/maven_environment_setup.htm -[2]: http://www.tutorialspoint.com/maven/maven_netbeans.htm -[3]: http://www.tutorialspoint.com/maven/maven_intellij_idea.htm -[4]: http://www.tutorialspoint.com/maven/maven_eclispe_ide.htm -[5]: http://www.groupdocs.com/corporate/purchase/purchase-policies/temporary-license diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/pom.xml b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/pom.xml deleted file mode 100644 index 019d2c8..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/pom.xml +++ /dev/null @@ -1,62 +0,0 @@ - - 4.0.0 - - com.groupdocs.ui - annotation-servlets-ui - war - 1.0-SNAPSHOT - - - 8 - 8 - false - - - - - javax - javaee-api - 7.0 - provided - - - com.groupdocs - groupdocs-annotation - 17.10.1 - - - com.fasterxml.jackson.core - jackson-databind - 2.9.7 - - - commons-io - commons-io - 2.4 - - - - - - - - src/main/resources - true - - - src/test/resources - true - - - - - org.eclipse.jetty - jetty-maven-plugin - 9.4.0.v20161208 - - - - - - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/Utils.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/Utils.java deleted file mode 100644 index 8aed771..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/Utils.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.groupdocs.ui; - -import com.groupdocs.annotation.common.license.License; -import com.groupdocs.annotation.domain.config.AnnotationConfig; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.annotation.handler.input.IDocumentDataHandler; -import com.groupdocs.annotation.handler.input.dataobjects.Document; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.FileSystem; -import java.nio.file.FileSystems; -import java.nio.file.Files; -import java.util.Properties; - -public class Utils { - static { - // Load the license as early as possible - loadLicense(); - } - - public static AnnotationImageHandler createAnnotationImageHandler() { - AnnotationConfig cfg = new AnnotationConfig(); - cfg.setStoragePath(getStoragePath()); - AnnotationImageHandler annotator = new AnnotationImageHandler(cfg); - return annotator; - - } - - public static Document findDocumentByName(String name) { - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - IDocumentDataHandler documentDataHandler = imageHandler.getDocumentDataHandler(); - Document doc = documentDataHandler.getDocument(name); - if (doc != null) { - return doc; - } - - long documentId = imageHandler.createDocument(name); - - try (InputStream original = new FileInputStream(Utils.getStoragePath() + "/" + name)) { - imageHandler.importAnnotations(original, ""+documentId); - } catch (Exception x) { - throw new RuntimeException(x); - } - return documentDataHandler.get(documentId); - } - - public static void loadLicense() { - License l = new License(); - if (Files.exists(FileSystems.getDefault().getPath(getProjectProperty("license.path")))) { - l.setLicense(getProjectProperty("license.path")); - if (!License.isValidLicense()) { - throw new RuntimeException("Invalid license found."); - } - } - } - - public static String getStoragePath() { - return getProjectProperty("storage.path"); - } - - public static String getProjectProperty(String name) { - Properties p = new Properties(); - try (InputStream i = Utils.class.getResourceAsStream("/project.properties")) { - p.load(i); - } catch (IOException e) { - // Ignore - } - return p.getProperty(name); - } -} diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/AddAnnotationServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/AddAnnotationServlet.java deleted file mode 100644 index d846b80..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/AddAnnotationServlet.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.results.CreateAnnotationResult; -import com.groupdocs.annotation.domain.results.ListAnnotationsResult; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.annotation.handler.input.IDocumentDataHandler; -import com.groupdocs.annotation.handler.input.dataobjects.Document; -import com.groupdocs.ui.Utils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -@WebServlet("/annotation/add") -public class AddAnnotationServlet - extends HttpServlet { - protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - IDocumentDataHandler documentDataHandler = imageHandler.getDocumentDataHandler(); - - String filename = request.getParameter("file"); - Document doc = documentDataHandler.getDocument(filename); - long documentId = doc != null ? doc.getId() : imageHandler.createDocument(filename); - - AnnotationInfo annotation = new ObjectMapper().readValue(request.getInputStream(), AnnotationInfo.class); - annotation.setDocumentGuid(documentId); - CreateAnnotationResult result = imageHandler.createAnnotation(annotation); - new ObjectMapper().writeValue(response.getOutputStream(), result); - } -} diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/AnnotationServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/AnnotationServlet.java deleted file mode 100644 index 9f3e32a..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/AnnotationServlet.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.Point; -import com.groupdocs.annotation.domain.TextFieldInfo; -import com.groupdocs.annotation.domain.results.DeleteAnnotationResult; -import com.groupdocs.annotation.domain.results.MoveAnnotationResult; -import com.groupdocs.annotation.domain.results.SaveAnnotationTextResult; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.ui.Utils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -@WebServlet("/annotation") -public class AnnotationServlet extends HttpServlet { - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - String guid = request.getParameter("guid"); - - new ObjectMapper().writeValue(response.getOutputStream(), imageHandler.getAnnotation(guid).getAnnotation()); - } - - protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - - String guid = request.getParameter("guid"); - long annotationId = imageHandler.getAnnotation(guid).getId(); - - DeleteAnnotationResult result = imageHandler.deleteAnnotation(annotationId); - new ObjectMapper().writeValue(response.getOutputStream(), result); - - } - - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - String guid = request.getParameter("guid"); - String section = request.getParameter("section"); - AnnotationInfo annotationInfo = imageHandler.getAnnotation(guid).getAnnotation(); - long annotationId = imageHandler.getAnnotation(guid).getId(); - - switch (section) { - case "fieldtext": - TextFieldInfo info = new ObjectMapper().readValue(request.getInputStream(), TextFieldInfo.class); - SaveAnnotationTextResult result = imageHandler.saveTextField(annotationId, info); - new ObjectMapper().writeValue(response.getOutputStream(), result); - break; - case "position": - Point point = new ObjectMapper().readValue(request.getInputStream(), Point.class); - imageHandler.moveAnnotationMarker(annotationId, point, annotationInfo.getPageNumber()); - break; - default: - response.sendError(HttpServletResponse.SC_BAD_REQUEST); - break; - } - } -} - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/DeleteAnnotationServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/DeleteAnnotationServlet.java deleted file mode 100644 index 48b1a57..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/DeleteAnnotationServlet.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.groupdocs.annotation.domain.results.DeleteAnnotationResult; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.ui.Utils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -@WebServlet("/annotation/delete") -public class DeleteAnnotationServlet extends HttpServlet { - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - String filename = request.getParameter("file"); - long annotationId = Long.valueOf(request.getParameter("annotationId")); - - DeleteAnnotationResult result = imageHandler.deleteAnnotation(annotationId); - new ObjectMapper().writeValue(response.getOutputStream(), result); - } -} diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/DocumentInfoServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/DocumentInfoServlet.java deleted file mode 100644 index d31b57d..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/DocumentInfoServlet.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.groupdocs.annotation.domain.PageData; -import com.groupdocs.annotation.domain.RowData; -import com.groupdocs.annotation.domain.containers.DocumentInfoContainer; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.ui.Utils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -@WebServlet("/document/info") -public class DocumentInfoServlet - extends HttpServlet { - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - AnnotationImageHandler handler = Utils.createAnnotationImageHandler(); - String filename = request.getParameter("file"); - DocumentInfoContainer result = handler.getDocumentInfo(filename); - response.setHeader("Content-Type", "application/json"); - new ObjectMapper().writeValue(response.getOutputStream(), result); - } -} diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/DownloadAnnotatedServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/DownloadAnnotatedServlet.java deleted file mode 100644 index 33a10f3..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/DownloadAnnotatedServlet.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.annotation.handler.input.dataobjects.Document; -import com.groupdocs.ui.Utils; -import org.apache.commons.io.IOUtils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Arrays; -import java.util.List; - -@WebServlet("/download/annotated") -public class DownloadAnnotatedServlet extends HttpServlet { - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - String filename = request.getParameter("file"); - - Document document = Utils.findDocumentByName(filename); - - List list = Arrays.asList(imageHandler.getAnnotations(document.getId()).getAnnotations()); - - InputStream exported; - try (InputStream original = new FileInputStream(Utils.getStoragePath() + "/" + filename)) { - exported = imageHandler.exportAnnotationsToDocument(original, list, document.getDocumentType()); - } catch (Exception x) { - throw new RuntimeException(x); - } - - response.setHeader("Content-Type", "application/octet-stream"); - response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\""); - - IOUtils.copy(exported, response.getOutputStream()); - } -} diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/ListAnnotationsServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/ListAnnotationsServlet.java deleted file mode 100644 index f5402a4..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/ListAnnotationsServlet.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.results.GetAnnotationResult; -import com.groupdocs.annotation.domain.results.ListAnnotationsResult; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.annotation.handler.input.dataobjects.Document; -import com.groupdocs.ui.Utils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.ArrayList; - -@WebServlet("/annotation/list") -public class ListAnnotationsServlet extends HttpServlet { - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - String filename = request.getParameter("file"); - - Document doc = Utils.findDocumentByName(filename); - ListAnnotationsResult listResult = imageHandler.getAnnotations(doc.getId()); - - ArrayList list = new ArrayList<>(); - for (AnnotationInfo inf : listResult.getAnnotations()) { - list.add(imageHandler.getAnnotation(inf.getGuid())); - } - - new ObjectMapper().writeValue(response.getOutputStream(), list); - } -} diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/PageCountServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/PageCountServlet.java deleted file mode 100644 index 3bf59ba..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/PageCountServlet.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.groupdocs.annotation.domain.containers.DocumentInfoContainer; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.ui.Utils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.HashMap; - -@WebServlet("/page/count") -public class PageCountServlet - extends HttpServlet { - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - AnnotationImageHandler handler = Utils.createAnnotationImageHandler(); - String filename = request.getParameter("file"); - DocumentInfoContainer info = handler.getDocumentInfo(filename); - HashMap result = new HashMap<>(); - result.put("count", info.getPages().size()); - response.setHeader("Content-Type", "application/json"); - new ObjectMapper().writeValue(response.getOutputStream(), result); - } -} diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/PageImageServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/PageImageServlet.java deleted file mode 100644 index e0fc9ff..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/PageImageServlet.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.groupdocs.annotation.domain.image.PageImage; -import com.groupdocs.annotation.domain.options.ImageOptions; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.ui.Utils; -import org.apache.commons.io.IOUtils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.Arrays; - -/** - * Query String parameters: - * width: Integer: The width of output image. - * height: Integer: The height of output image. - * page: Integer: The page number that needs to be converted. - */ -@WebServlet("/page/image") -public class PageImageServlet - extends HttpServlet { - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - response.setHeader("Content-Type", "image/png"); - AnnotationImageHandler handler = Utils.createAnnotationImageHandler(); - - ImageOptions o = new ImageOptions(); - int pageNumber = Integer.valueOf(request.getParameter("page")); - o.setPageNumbersToConvert(Arrays.asList(pageNumber - 1)); - o.setPageNumber(pageNumber - 1); - o.setCountPagesToConvert(1); - if (request.getParameterMap().containsKey("width")) { - o.setWidth(Integer.valueOf(request.getParameter("width"))); - } - if (request.getParameterMap().containsKey("height")) { - o.setHeight(Integer.valueOf(request.getParameter("height"))); - } - - String filename = request.getParameter("file"); - - for (PageImage pageImage: handler.getPages(filename, o)) { - if (pageImage.getPageNumber() == pageNumber - 1) { - IOUtils.copy(pageImage.getStream(), response.getOutputStream()); - break; - } - } - } -} diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/PageTextServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/PageTextServlet.java deleted file mode 100644 index 94c0db8..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/PageTextServlet.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.groupdocs.annotation.domain.PageData; -import com.groupdocs.annotation.domain.RowData; -import com.groupdocs.annotation.domain.containers.DocumentInfoContainer; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.ui.Utils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -@WebServlet("/page/text") -public class PageTextServlet - extends HttpServlet { - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - AnnotationImageHandler handler = Utils.createAnnotationImageHandler(); - - int pageNumber = Integer.valueOf(request.getParameter("page")); - String filename = request.getParameter("file"); - - List result = new ArrayList<>(); - DocumentInfoContainer documentInfoContainer = handler.getDocumentInfo(filename); - for (PageData pageData : documentInfoContainer.getPages()) { - if (pageData.getNumber() == pageNumber) { - result = pageData.getRows(); - break; - } - } - new ObjectMapper().writeValue(response.getOutputStream(), result); - } -} diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/RepliesServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/RepliesServlet.java deleted file mode 100644 index 4f619f1..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/RepliesServlet.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.groupdocs.annotation.domain.AnnotationReplyInfo; -import com.groupdocs.annotation.domain.results.AddReplyResult; -import com.groupdocs.annotation.domain.results.GetAnnotationResult; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.ui.Utils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -@WebServlet("/replies") -public class RepliesServlet extends HttpServlet { - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - String guid = request.getParameter("guid"); - - GetAnnotationResult annotationResult = imageHandler.getAnnotation(guid); - if (annotationResult == null) { - response.sendError(HttpServletResponse.SC_NOT_FOUND); - return; - } - long annotationId = annotationResult.getId(); - AnnotationReplyInfo[] list = imageHandler.listAnnotationReplies(annotationId).getReplies(); - - new ObjectMapper().writeValue(response.getOutputStream(), list); - } - - @Override - protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - - AnnotationReplyInfo info = new ObjectMapper().readValue(request.getInputStream(), AnnotationReplyInfo.class); - - long annotationId = imageHandler.getAnnotation(info.getGuid()).getId(); - - AddReplyResult result = imageHandler.createAnnotationReply(annotationId, ""); - new ObjectMapper().writeValue(response.getOutputStream(), result); - } -} - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/ReplyServlet.java b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/ReplyServlet.java deleted file mode 100644 index e03bbd6..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/java/com/groupdocs/ui/servlet/ReplyServlet.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.groupdocs.ui.servlet; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.groupdocs.annotation.domain.AnnotationReplyInfo; -import com.groupdocs.annotation.domain.results.DeleteReplyResult; -import com.groupdocs.annotation.handler.AnnotationImageHandler; -import com.groupdocs.ui.Utils; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; - -@WebServlet("/reply") -public class ReplyServlet extends HttpServlet { - - protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - - String guid = request.getParameter("guid"); - - DeleteReplyResult result = imageHandler.deleteAnnotationReply(guid); - new ObjectMapper().writeValue(response.getOutputStream(), result); - - } - - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - response.setHeader("Content-Type", "application/json"); - AnnotationImageHandler imageHandler = Utils.createAnnotationImageHandler(); - String guid = request.getParameter("guid"); - String section = request.getParameter("section"); - - switch (section) { - case "message": - AnnotationReplyInfo info = new ObjectMapper().readValue(request.getInputStream(), AnnotationReplyInfo.class); - imageHandler.editAnnotationReply(guid, info.getMessage()); - break; - default: - response.sendError(HttpServletResponse.SC_BAD_REQUEST); - break; - } - } -} - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/resources/project.properties b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/resources/project.properties deleted file mode 100644 index 1f1266b..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/resources/project.properties +++ /dev/null @@ -1,3 +0,0 @@ -basedir=${basedir} -storage.path=${basedir}/storage -license.path=${basedir}/GroupDocs.Total.Java.lic diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.config.js b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.config.js deleted file mode 100644 index 2beb042..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.config.js +++ /dev/null @@ -1,12 +0,0 @@ -(function () { - 'use strict'; - - function main(cfpLoadingBarProvider) { - cfpLoadingBarProvider.includeSpinner = false; - cfpLoadingBarProvider.includeBar = true; - } - - angular.module('GroupDocsAnnotationApp').config(['cfpLoadingBarProvider', main]); - -})(); - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.controller.pageCanvas.js b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.controller.pageCanvas.js deleted file mode 100644 index 868bb57..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.controller.pageCanvas.js +++ /dev/null @@ -1,13 +0,0 @@ -(function () { - 'use strict'; - - function main($rootScope, $scope, AnnotationListFactory, FilesFactory, DocumentInfoFactory) { - - $rootScope.docInfo = DocumentInfoFactory.get(); - $scope.selectedFile = FilesFactory.selectedFile; - $scope.annotationsList = AnnotationListFactory.query(); - $rootScope.selectedDrawingTool = 'select'; - } - angular.module('GroupDocsAnnotationApp').controller('PageCanvasController', main); -})(); - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.controller.thread.js b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.controller.thread.js deleted file mode 100644 index 1d41062..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.controller.thread.js +++ /dev/null @@ -1,81 +0,0 @@ -(function () { - 'use strict'; - - function main($rootScope, $scope, $resource, AnnotationFactory, RepliesFactory, ReplyFactory) { - - $rootScope.$watch('selectedAnnotationGuid', function () { - $scope.fetchAnnotation(); - }, true); - - $scope.deleteAnnotation = function (item) { - $rootScope.$broadcast('request-annotation-deletion', item.guid); - }; - - $scope.saveAnnotationFieldText = function (item) { - AnnotationFactory - .updateFieldText( - { - guid: item.guid - }, - { - fieldText: item.fieldText - } - ) - .$promise - .then(function (response) { - item.unsaved = false; - }); - }; - - $scope.addReply = function (item) { - RepliesFactory - .put( - {guid: item.guid} - ) - .$promise - .then(function (response) { - $scope.fetchAnnotation(); - }); - }; - - $scope.deleteReply = function (guid) { - ReplyFactory - .remove({guid: guid}) - .$promise - .then(function (response) { - $scope.fetchAnnotation(); - }); - }; - - $scope.saveReplyMessage = function (reply) { - ReplyFactory - .updateMessage( - { - guid: reply.guid - }, - { - message: reply.message - } - ) - .$promise - .then(function (response) { - reply.unsaved = false; - }); - }; - - $scope.fetchAnnotation = function () { - if (typeof($rootScope.selectedAnnotationGuid) === 'string') { - $scope.selectedAnnotation = AnnotationFactory.get({ - guid: $rootScope.selectedAnnotationGuid - }); - } else { - $scope.selectedAnnotation = null; - } - }; - - } - - angular.module('GroupDocsAnnotationApp').controller('ThreadController', main); - -})(); - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.controller.tools.js b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.controller.tools.js deleted file mode 100644 index 9bd89db..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.controller.tools.js +++ /dev/null @@ -1,37 +0,0 @@ -(function () { - 'use strict'; - - function main($rootScope, $scope) { - - $scope.selectRectangleTool = function ($event) { - $rootScope.selectedDrawingTool = 'rectangle'; - }; - $scope.selectDistanceTool = function ($event) { - $rootScope.selectedDrawingTool = 'distance'; - }; - $scope.selectArrowTool = function ($event) { - $rootScope.selectedDrawingTool = 'arrow'; - }; - $scope.selectPencilTool = function ($event) { - $rootScope.selectedDrawingTool = 'pencil'; - }; - $scope.selectSelectTool = function ($event) { - $rootScope.selectedDrawingTool = 'select'; - }; - $scope.selectPointTool = function ($event) { - $rootScope.selectedDrawingTool = 'point'; - }; - $scope.selectUnderlineTool = function ($event) { - $rootScope.selectedDrawingTool = 'underline'; - }; - $scope.selectStrikeoutTool = function ($event) { - $rootScope.selectedDrawingTool = 'strikeout'; - }; - - $scope.selectSelectTool(); - } - - angular.module('GroupDocsAnnotationApp').controller('ToolsController', main); - -})(); - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.directive.gdxAnnoPage.js b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.directive.gdxAnnoPage.js deleted file mode 100644 index 6e39215..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.directive.gdxAnnoPage.js +++ /dev/null @@ -1,513 +0,0 @@ -(function () { - 'use strict'; - - function main($rootScope, cfpLoadingBar, AnnotationFactory, AnnotationAddFactory) { - return { - restrict: 'E', - link: { - pre: function (scope, element, attrs) { - }, - post: function (scope, element, attrs) { - setupCanvas($rootScope, scope, element, attrs); - setupPageImage($rootScope, scope, element, attrs); - setupDrawingTools($rootScope, AnnotationFactory, AnnotationAddFactory, scope, element, attrs); - // setupAnnotations has been moved to pageImage.onLoad - setupAnnotationDeletion($rootScope, AnnotationFactory, scope, element, attrs); - } - } - } - } - - function setupCanvas($rootScope, scope, element, attrs) { - element.css('width', attrs.width + 'px'); - element.css('height', attrs.height + 'px'); - - var canvas = document.createElement("canvas"); - canvas.setAttribute('width', attrs.width); - canvas.setAttribute('height', attrs.height); - canvas.setAttribute("id", "page-canvas-" + attrs.number); - element.append(canvas); - - var paperScope = new paper.PaperScope(); - paperScope.setup(canvas); - scope.paperScopeId = paperScope._id; - } - - function setupPageImage($rootScope, scope, element, attrs) { - var ps = paper.PaperScope.get(scope.paperScopeId); - - var pageImageUrl = "/page/image" - + "?file=" + attrs.file - + "&page=" + attrs.number - + "&width=" + attrs.width - + "&height=" + attrs.height; - - var loadingIndicator = new ps.Raster({ - source: '/loading_indicator.gif', - position: ps.view.center - }); - - var pageImage = new ps.Raster({ - source: pageImageUrl, - position: ps.view.center - }); - - pageImage.onLoad = function () { - pageImage.scale(attrs.width / pageImage.width); - setupAnnotations($rootScope, scope, element, attrs); - loadingIndicator.remove(); - }; - } - - function setupDrawingTools($rootScope, AnnotationFactory, AnnotationAddFactory, scope, element, attrs) { - var ps = paper.PaperScope.get(scope.paperScopeId); - - var currentObject = null; - ps.tool = new ps.Tool(); - ps.tool.minDistance = 3; - - ps.tool.onMouseDown = function (event) { - var hitResult = ps.project.activeLayer.hitTest(event.point, { - segments: true, - stroke: true, - fill: true, - tolerance: 0 - }); - - ps.project.deselectAll(); - - switch ($rootScope.selectedDrawingTool) { - case 'select': - if (hitResult && hitResult.item.name) { - currentObject = hitResult.item; - currentObject.selected = true; - $rootScope.selectedAnnotationGuid = currentObject.name; - if (!$rootScope.$$phase) { - $rootScope.$apply(); - } - } - else if (hitResult && hitResult.item._parent._name) { - currentObject = hitResult.item._parent; - currentObject.selected = true; - $rootScope.selectedAnnotationGuid = currentObject._name; - if (!$rootScope.$$phase) { - $rootScope.$apply(); - } - } - break; - case 'rectangle': - var shape = new ps.Rectangle(event.point.x, event.point.y, 1, 1); - currentObject = new ps.Path.Rectangle(shape); - currentObject.strokeColor = 'black'; - currentObject.strokeWidth = 2; - break; - case 'pencil': - currentObject = new ps.Path(); - currentObject.add(event.point); - currentObject.strokeColor = 'black'; - currentObject.strokeWidth = 2; - break; - case 'point': - var pt = new ps.Shape.Circle(event.point, 3); - currentObject = pt.toPath(true); - currentObject.strokeColor = 'black'; - currentObject.fillColor = 'black'; - currentObject.strokeWidth = 2; - break; - case 'underline': - var start = new ps.Point(event.point); - $rootScope.startRow = getStartRow($rootScope.docInfo,start,attrs); - $rootScope.startText = $rootScope.startRow[0].characterCoordinates.filter(x=>Math.floor(x) > Math.floor(start.x)); - if($rootScope.startText.length>1){ - currentObject = new ps.Path.Line(new ps.Point($rootScope.startText[0], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight), new ps.Point($rootScope.startText[1], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight)); - currentObject.strokeColor = 'black'; - currentObject.strokeWidth = 2; - } - else if($rootScope.startText.length>1){ - currentObject = new ps.Path.Line(new ps.Point($rootScope.startText[0], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight), new ps.Point($rootScope.startText[0], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight)); - currentObject.strokeColor = 'black'; - currentObject.strokeWidth = 2; - } - break; - case 'strikeout': - var start = new ps.Point(event.point); - $rootScope.startRow = getStartRow($rootScope.docInfo,start,attrs); - $rootScope.startText = $rootScope.startRow[0].characterCoordinates.filter(x=>Math.floor(x) > Math.floor(start.x)); - if($rootScope.startText.length>1){ - currentObject = new ps.Path.Line(new ps.Point($rootScope.startText[0], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight/2), new ps.Point($rootScope.startText[1], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight/2)); - currentObject.strokeColor = 'black'; - currentObject.strokeWidth = 2; - } - else if($rootScope.startText.length>1){ - currentObject = new ps.Path.Line(new ps.Point($rootScope.startText[0], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight/2), new ps.Point($rootScope.startText[0], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight/2)); - currentObject.strokeColor = 'black'; - currentObject.strokeWidth = 2; - } - break; - } - }; - - ps.tool.onMouseDrag = function (event) { - switch ($rootScope.selectedDrawingTool) { - case 'select': - angular.forEach(scope.annotationsList, function (item) { - if (currentObject && item.annotation.guid === currentObject.name && item.annotation.type === 4 && item.annotation.type === 8) { - currentObject = null; - } - }); - if (currentObject) { - currentObject.position.x += event.delta.x; - currentObject.position.y += event.delta.y; - } - break; - case 'rectangle': - currentObject.bounds.width += event.delta.x; - currentObject.bounds.height += event.delta.y; - break; - case 'pencil': - currentObject.add(event.point); - break; - case 'point': - currentObject.position.x += event.delta.x; - currentObject.position.y += event.delta.y; - break; - case 'underline': - if(currentObject){ - var end = new ps.Point(event.point); - var endText = $rootScope.startRow[0].characterCoordinates.filter(x=>Math.floor(x) > Math.floor(end.x)); - if(endText.length>1){ - currentObject.add(new ps.Point(endText[1], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight)); - } - else if(endText.length>0){ - currentObject.add(new ps.Point(endText[0], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight)); - } - } - break; - case 'strikeout': - if(currentObject){ - var end = new ps.Point(event.point); - var endText = $rootScope.startRow[0].characterCoordinates.filter(x=>Math.floor(x) > Math.floor(end.x)); - if(endText.length>1){ - currentObject.add(new ps.Point(endText[1], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight/2)); - } - else if(endText.length>0){ - currentObject.add(new ps.Point(endText[0], $rootScope.startRow[0].lineTop + $rootScope.startRow[0].lineHeight/2)); - } - - } - break; - case 'arrow': - if (currentObject) { - currentObject.remove(); - } - var start = new ps.Point(event.downPoint); - var end = new ps.Point(event.point); - - var tailLine = new ps.Path.Line(start, end); - var tailVector = end.subtract(start); - var headLine = tailVector.normalize(10); - - currentObject = new ps.Group([ - new ps.Path([start, end]), - new ps.Path([ - end.add(headLine.rotate(150)), - end, - end.add(headLine.rotate(-150)) - ]) - ]); - currentObject.strokeColor = 'black'; - currentObject.strokeWidth = 2; - break; - case 'distance': - if(currentObject){ - currentObject.remove(); - } - var start = new ps.Point(event.downPoint); - var end = new ps.Point(event.point); - var textX = (start.x + end.x)/2; - var textY = (start.y + end.y)/2; - var textPoint = new ps.Point(textX, textY); - var tailLine = new ps.Path.Line(start, end); - var textPosition = end.add(start); - var tailVector = end.subtract(start); - var headLine = tailVector.normalize(10); - var tailArrow = tailVector.normalize(-10); - currentObject = new ps.Group([ - new ps.Path([start, end]), - new ps.Path([ - end.add(headLine.rotate(150)), - end, - end.add(headLine.rotate(-150)) - ]), - new ps.Path([ - start.add(tailArrow.rotate(-150)), - start, - start.add(tailArrow.rotate(150)) - ]), - new ps.PointText(textPoint) - ]); - - currentObject.strokeColor = 'black'; - currentObject.strokeWidth = 2; - currentObject._children[3].content = Math.floor(currentObject._children[0].length) + " px"; - currentObject._children[3].strokeWidth = 0.5; - break; - } - }; - - ps.tool.onMouseUp = function (event) { - var ant = {}; - - switch ($rootScope.selectedDrawingTool) { - case 'select': - if (currentObject && (event.delta.x !== 0 || event.delta.y !== 0)) { - AnnotationFactory.updatePosition( - { - guid: currentObject.name - }, - { - x: currentObject.bounds.x, - y: currentObject.bounds.y - } - ); - } - break; - case 'rectangle': - ant = { - box: { - x: currentObject.bounds.x, - y: currentObject.bounds.y, - width: currentObject.bounds.width, - height: currentObject.bounds.height - }, - type: 1 - }; - break; - case 'pencil': - ant.type = 4; - ant.svgPath = currentObject.exportSVG().getAttribute('d'); - break; - case 'point': - ant = angular.merge({}, ant, { - type: 2, - box: { - x: event.point.x, - y: event.point.y, - width: 0, - height: 0 - } - }); - break; - case 'arrow': - ant.type = 8; - ant.svgPath = currentObject.exportSVG().firstChild.getAttribute('d'); - ant.svgPath += " " + currentObject.exportSVG().lastChild.getAttribute('d'); - break; - case 'distance': - ant = { - type : 12, - svgPath : currentObject.exportSVG().children[0].getAttribute('d')+ " " + currentObject.exportSVG().children[1].getAttribute('d') + " " + currentObject.exportSVG().children[2].getAttribute('d'), - text : currentObject.children[3].content, - box : { - x: currentObject.children[3].position.x, - y: currentObject.children[3].position.y, - width: 0, - height: 0 - } - }; - break; - case 'underline': - ant = { - type : 11, - svgPath : currentObject.exportSVG().getAttribute('d'), - box: { - x: currentObject.bounds.x, - y: currentObject.bounds.y, - width: 0, - height: 0 - }, - }; - break; - case 'strikeout': - ant = { - type : 11, - svgPath : currentObject.exportSVG().getAttribute('d'), - box: { - x: currentObject.bounds.x, - y: currentObject.bounds.y, - width: 0, - height: 0 - }, - }; - break; - } - - if (ant.type) { - ant.pageNumber = attrs.number; - AnnotationAddFactory.save(ant, function (response) { - currentObject.name = response.guid; - currentObject.selected = true; - currentObject = null; - $rootScope.selectedAnnotationGuid = response.guid; - if (!$rootScope.$$phase) { - $rootScope.$apply(); - } - }); - } else { - currentObject = null; - } - }; - - ps.tool.onKeyDown = function (event) { - if (event.key === 'delete') { - angular.forEach(ps.project.selectedItems, function (item) { - if (item.name) { - $rootScope.$broadcast('request-annotation-deletion', item.name); - } - else if (item._parent._name) { - $rootScope.$broadcast('request-annotation-deletion', item._parent._name); - } - - }); - } - } - } - - function setupAnnotations($rootScope, scope, element, attrs) { - var ps = paper.PaperScope.get(scope.paperScopeId); - - scope.$watch('annotationsList', function () { - - }); - - angular.forEach(scope.annotationsList, function (item) { - - if (attrs.number != item.annotation.pageNumber) { - return; - } - - switch (item.annotation.type) { - case 1: - - var shape = new ps.Rectangle( - item.annotation.box.x, - item.annotation.box.y, - item.annotation.box.width, - item.annotation.box.height - ); - var path = new ps.Path.Rectangle(shape); - path.strokeColor = 'black'; - path.strokeWidth = 2; - path.name = item.annotation.guid; - - break; - - case 5: - var line = new ps.Path(); - line.pathData = item.annotation.svgPath; - line.strokeColor = 'black'; - line.strokeWidth = 2; - line.name = item.annotation.guid; - - break; - case 4: - var line = new ps.Path(); - line.pathData = item.annotation.svgPath; - line.strokeColor = 'black'; - line.strokeWidth = 2; - line.name = item.annotation.guid; - - break; - case 2: - var pt = new ps.Shape.Circle(new ps.Point(item.annotation.box.x + 3, item.annotation.box.y + 3), 3); - var ptp = pt.toPath(true); - ptp.strokeColor = 'black'; - ptp.fillColor = 'black'; - ptp.strokeWidth = 2; - ptp.name = item.annotation.guid; - break; - case 8: - var arrow = new ps.Group([ - new ps.Path(item.annotation.svgPath.split(" ")[0]), - new ps.Path(item.annotation.svgPath.split(" ")[1]) - ]); - arrow.strokeColor = 'black'; - arrow.strokeWidth = 2; - arrow.name = item.annotation.guid; - break; - case 11: - var line = new ps.Path(); - line.pathData = item.annotation.svgPath; - line.strokeColor = 'black'; - line.strokeWidth = 2; - line.name = item.annotation.guid; - break; - case 3: - var line = new ps.Path(); - line.pathData = item.annotation.svgPath; - line.strokeColor = 'black'; - line.strokeWidth = 2; - line.name = item.annotation.guid; - break; - case 12: - var distance = new ps.Group([ - new ps.Path(item.annotation.svgPath.split(" ")[0]), - new ps.Path(item.annotation.svgPath.split(" ")[1]), - new ps.Path(item.annotation.svgPath.split(" ")[2]), - new ps.PointText(new ps.Point(item.annotation.box.x, item.annotation.box.y)) - ]); - distance.strokeColor = 'black'; - distance.strokeWidth = 2; - distance.children[3].content = Math.floor(distance.children[0].length) + " px"; - distance.children[3].strokeWidth = 0.5; - distance.name = item.annotation.guid; - break; - } - }) - } - function getStartRow(docInfo,start,attrs){ - var startRow = []; - for(var i = 0; i<30; i++){ - startRow = docInfo.pages[attrs.number-1].rows.filter(x => Math.floor(x.lineTop) == (Math.floor(start.y)-i )); - if(startRow.length>0) - return startRow; - } - if(startRow.length == 0) - for(var i = 0; i<30; i++){ - startRow = docInfo.pages[attrs.number-1].rows.filter(x => Math.floor(x.lineTop) == (Math.floor(start.y)+i )); - if(startRow.length>0) - return startRow; - } - - } - - function setupAnnotationDeletion($rootScope, AnnotationFactory, scope, element, attrs) { - var ps = paper.PaperScope.get(scope.paperScopeId); - - $rootScope.$on('request-annotation-deletion', function (event, guid) { - if (typeof(guid) !== 'string') { - return; - } - - var item = ps.project.activeLayer.children[guid]; - if (item) { - AnnotationFactory - .remove({guid: guid}) - .$promise - .then(function (response) { - item.remove(); - ps.project.deselectAll(); - $rootScope.selectedAnnotationGuid = null; - if (!$rootScope.$$phase) { - $rootScope.$apply(); - } - }); - } - - }); - } - - angular.module('GroupDocsAnnotationApp').directive('gdxAnnoPage', main, ['cfpLoadingBar']); - -})(); - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.factory.annotation.js b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.factory.annotation.js deleted file mode 100644 index b7f450c..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.factory.annotation.js +++ /dev/null @@ -1,37 +0,0 @@ -(function () { - 'use strict'; - - function main($resource) { - - return $resource( - '/annotation?guid=:guid§ion=:section', - {}, - { - get: { - method: 'GET', - responseType: 'application/json' - }, - remove: { - method: 'DELETE', - responseType: 'application/json' - }, - updateFieldText: { - method: 'POST', - params: { - section: 'fieldtext' - } - }, - updatePosition: { - method: 'POST', - params: { - section: 'position' - } - } - } - ); - } - - angular.module('GroupDocsAnnotationApp').factory('AnnotationFactory', main); - -})(); - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.factory.replies.js b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.factory.replies.js deleted file mode 100644 index 5001fa3..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.factory.replies.js +++ /dev/null @@ -1,24 +0,0 @@ -(function () { - 'use strict'; - - function main($resource) { - - return $resource( - '/replies?guid=:guid', - {}, - { - query: { - method: 'GET', - isArray: true - }, - put: { - method: 'PUT' - } - } - ); - } - - angular.module('GroupDocsAnnotationApp').factory('RepliesFactory', main); - -})(); - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.factory.reply.js b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.factory.reply.js deleted file mode 100644 index a016c6c..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.factory.reply.js +++ /dev/null @@ -1,26 +0,0 @@ -(function () { - 'use strict'; - - function main($resource) { - - return $resource( - '/reply?guid=:guid§ion=:section', - {}, - { - remove: { - method: 'DELETE' - }, - updateMessage: { - method: 'POST', - params: { - section: 'message' - } - } - } - ); - } - - angular.module('GroupDocsAnnotationApp').factory('ReplyFactory', main); - -})(); - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.js b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.js deleted file mode 100644 index 1866631..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/app.js +++ /dev/null @@ -1,85 +0,0 @@ -(function () { - 'use strict'; - - var ANNOTATION_TYPE_AREA = 1; - - angular - .module('GroupDocsAnnotationApp', ['ngMaterial', 'ngResource', 'angular-loading-bar']) - .factory('FilesFactory', FilesFactory) - .factory('DocumentInfoFactory', DocumentInfoFactory) - .factory('AnnotationListFactory', AnnotationListFactory) - .factory('AnnotationAddFactory', AnnotationAddFactory) - .controller('AvailableFilesController', AvailableFilesController) - .controller('ToolbarController', ToolbarController) - ; - - function FilesFactory() { - var fileList = [ - 'candy.pdf' - ]; - return { - list: function () { - return fileList; - }, - selectedFile: fileList[0] - - }; - } - - function DocumentInfoFactory($resource, FilesFactory) { - return $resource('/document/info?file=:filename', {}, { - get: { - method: 'GET', - params: { - filename: FilesFactory.selectedFile - } - } - }); - } - - function AnnotationListFactory($resource, FilesFactory) { - return $resource('/annotation/list?file=:filename', {}, { - query: { - method: 'GET', - params: { - filename: FilesFactory.selectedFile - }, - isArray: true - } - }); - } - - function AnnotationAddFactory($resource, FilesFactory) { - return $resource('/annotation/add?file=:filename', {}, { - save: { - method: 'POST', - params: { - filename: FilesFactory.selectedFile - } - } - }); - } - - function AvailableFilesController($scope, FilesFactory) { - $scope.list = FilesFactory.list(); - $scope.selectedFile = FilesFactory.selectedFile; - } - - function ToolbarController($scope, $mdToast, FilesFactory) { - $scope.selectedFile = FilesFactory.selectedFile; - - $scope.$on('annotation-added', function (event, args) { - $mdToast.show( - $mdToast.simple().textContent('Annotation added') - ); - }); - - $scope.$on('annotation-deleted', function (event, args) { - $mdToast.show( - $mdToast.simple().textContent('Annotation deleted') - ); - }); - } - -})(); - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/index.html b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/index.html deleted file mode 100644 index a087bcd..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/index.html +++ /dev/null @@ -1,200 +0,0 @@ - - - - GroupDocs.Annotation for Java - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - menu - -

GroupDocs.Annotation for Java

- - - file_download - Download the annotated file - -
- - {{ item }} - -
- - more_vert - -
- -
-
- - pan_tool - Select and Move - - - location_on - Point - - - edit_mode - Line - - - check_box_outline_blank - Area - - - arrow_forward - Arrow - - - compare_arrows - Distance - - - format_underlined - Underline - - - format_strikethrough - Strikeout - -
-
- - - - - - - - - - -
- - - - person - - - - {{ selectedAnnotation.creatorName }} - - - Anonymous - - - {{ selectedAnnotation.createdOn|date:'HH:mm'}} - on - {{ selectedAnnotation.createdOn|date:'yyyy-MM-dd'}} - - - - - - - - - - - - reply - - - save - - - delete - - - - - - - person - - - - {{ reply.userName }} - - - Anonymous - - - {{ reply.repliedOn|date:'HH:mm'}} - on - {{ reply.repliedOn|date:'yyyy-MM-dd'}} - - - - - - - - - - - - reply - - - save - - - delete - - - -
-
-
-
- - -
-
- - - diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/loading_indicator.gif b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/loading_indicator.gif deleted file mode 100644 index af9afe2..0000000 Binary files a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/loading_indicator.gif and /dev/null differ diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/style.css b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/style.css deleted file mode 100644 index 84ee495..0000000 --- a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/src/main/webapp/style.css +++ /dev/null @@ -1,36 +0,0 @@ -.rectangle { - background-color: rgba(0, 0, 0, 0); - border: 2px solid blue; -} - -.rectangle:hover { - background-color: rgba(0, 0, 200, 0.5); - border: 1px dotted black; - cursor: pointer; -} - -.point { - color: red; -} - -.point:hover { - background-color: rgba(0, 0, 200, 0.5); - cursor: pointer; -} - -.arrow { - background-color: rgba(0, 0, 0, 0); - border: 2px solid blue; -} - -.arrow:hover { - background-color: rgba(0, 0, 200, 0.5); - border: 1px dotted black; - cursor: pointer; -} - -gdx-anno-page { - position: relative; - margin: 0 auto; - align-items: center; -} diff --git a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/storage/candy.pdf b/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/storage/candy.pdf deleted file mode 100644 index 0bad228..0000000 Binary files a/Showcase/GroupDocs.Annotation-for-Java-using-Servlets/storage/candy.pdf and /dev/null differ diff --git a/Showcase/README.md b/Showcase/README.md index c9e8439..e642717 100644 --- a/Showcase/README.md +++ b/Showcase/README.md @@ -1,8 +1,8 @@ # Showcase -GroupDocs.Annotation is a UI-Less back end API. Therefore, open sourced front-ends have been published. Users can seek the knwoledge about implementation of the project and make the changes according to their needs. - +The showcases provided in this section are open-source. You can explore them in order to learn how can GroupDocs.Annotation for Java be utilized for the front-end projects developmemnt. These projects are easy to manage and can be enhanced as per your requriements. Directory | Description --------- | ----------- -[GroupDocs.Annotation-for-Java-using-Servlets](https://github.com/groupdocs-annotation/GroupDocs.Annotation-for-Java/tree/master/Showcase/GroupDocs.Annotation-for-Java-using-Servlets) | This showcase project demonstrates Java developers about basic functionalities of the API and how they can add further features in the project. +[GroupDocs.Annotation-for-Java-Spring](https://github.com/groupdocs-annotation/GroupDocs.Annotation-for-Java-Spring) | Our new and improved GroupDocs.Annotation for Java Spring UI Example - native, simple, fully configurable and optimized Java document annotation application. +[GroupDocs.Annotation-for-Java-Dropwizard](https://github.com/groupdocs-annotation/GroupDocs.Annotation-for-Java-Dropwizard) | Our new and improved GroupDocs.Annotation for Java Dropwizard UI Example - native, simple, fully configurable and optimized Java document annotation application. \ No newline at end of file