Java tutorial
/* * Copyright 2014 PRImA Research Lab, University of Salford, United Kingdom * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.primaresearch.web.gwt.client.ui.page.tool; import org.primaresearch.dla.page.layout.physical.shared.LowLevelTextType; import org.primaresearch.dla.page.layout.physical.shared.RegionType; import org.primaresearch.web.gwt.client.page.PageLayoutC; import org.primaresearch.web.gwt.client.page.PageSyncManager; import org.primaresearch.web.gwt.client.ui.page.SelectionManager; import org.primaresearch.web.gwt.shared.page.ContentObjectC; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.i18n.client.HasDirection.Direction; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DialogBox; import com.google.gwt.user.client.ui.HasHorizontalAlignment.HorizontalAlignmentConstant; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.Panel; import com.google.gwt.user.client.ui.UIObject; import com.google.gwt.user.client.ui.VerticalPanel; /** * Tool for deleting a page content object. * * @author Christian Clausner * */ public class DeleteContentObjectTool { /** * Static method to run the tool (requests confirmation from the user). * * @param panel Parent panel * @param showRelativeTo Widget to which the confirmation dialogue is aligned to. * @param layout Page layout * @param object Content object to delete * @param syncManager Synchronisation manager to send the delete request to the server * @param selectionManager Content object selection manager for adding a listener */ public static void run(Panel panel, UIObject showRelativeTo, PageLayoutC layout, ContentObjectC object, PageSyncManager syncManager, SelectionManager selectionManager) { if (layout == null || object == null) return; showConfiramtionDialog(panel, showRelativeTo, layout, object, syncManager, selectionManager); } private static void showConfiramtionDialog(Panel parent, UIObject showRelativeTo, final PageLayoutC layout, final ContentObjectC object, final PageSyncManager syncManager, final SelectionManager selectionManager) { final DialogBox confirmationDialog = new DialogBox(); final VerticalPanel vertPanel = new VerticalPanel(); confirmationDialog.add(vertPanel); Label confirmLabel = new Label(); vertPanel.add(confirmLabel); final HorizontalPanel horPanel = new HorizontalPanel(); horPanel.setWidth("100%"); horPanel.setSpacing(5); horPanel.setHorizontalAlignment(HorizontalAlignmentConstant.endOf(Direction.LTR)); vertPanel.add(horPanel); Button buttonCancel = new Button("Cancel"); horPanel.add(buttonCancel); buttonCancel.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { confirmationDialog.hide(); } }); Button buttonDelete = new Button("Delete"); horPanel.add(buttonDelete); buttonDelete.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { syncManager.deleteContentObject(object); layout.remove(object); selectionManager.clearSelection(); confirmationDialog.hide(); } }); String text = "Delete selected "; if (object.getType() instanceof RegionType) text += "region"; else if (LowLevelTextType.TextLine.equals(object.getType())) text += "text line"; else if (LowLevelTextType.Word.equals(object.getType())) text += "word"; else if (LowLevelTextType.Glyph.equals(object.getType())) text += "glyph"; text += "?"; confirmLabel.setText(text); parent.add(confirmationDialog); if (showRelativeTo != null) confirmationDialog.showRelativeTo(showRelativeTo); else confirmationDialog.show(); } }