/* * Copyright (C) 2012 Jan Pokorsky * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package cz.cas.lib.proarc.webapp.client.action; import com.google.gwt.user.client.Window; import com.smartgwt.client.data.Record; import cz.cas.lib.proarc.webapp.client.ClientMessages; import cz.cas.lib.proarc.webapp.client.ds.ImportBatchItemDataSource; import cz.cas.lib.proarc.webapp.client.ds.RestConfig; import cz.cas.lib.proarc.webapp.shared.rest.DigitalObjectResourceApi; /** * Displays digital object in FOXML format. Uses {@link Selectable} on * the event source to get object to show. * * @author Jan Pokorsky */ public final class FoxmlViewAction extends AbstractAction { public FoxmlViewAction(ClientMessages i18n) { super(i18n.FoxmlViewAction_Title(), "[SKIN]/actions/view.png", i18n.FoxmlViewAction_Hint()); } @Override public boolean accept(ActionEvent event) { Object[] selection = Actions.getSelection(event); return selection != null && selection.length == 1; } @Override public void performAction(ActionEvent event) { Object[] selection = Actions.getSelection(event); if (selection != null && selection.length > 0 && selection[0] instanceof Record) { view((Record) selection[0]); } } public void view(Record selection) { String pid = selection.getAttribute(ImportBatchItemDataSource.FIELD_PID); String batchId = selection.getAttribute(ImportBatchItemDataSource.FIELD_BATCHID); view(pid, batchId); } public void view(String pid, String batchId) { if (pid == null) { throw new IllegalArgumentException("pid"); } StringBuilder sb = new StringBuilder(); sb.append(RestConfig.URL_DIGOBJECT_DISSEMINATION); sb.append('?').append(DigitalObjectResourceApi.DIGITALOBJECT_PID).append('=').append(pid); if (batchId != null) { sb.append('&').append(DigitalObjectResourceApi.BATCHID_PARAM).append('=').append(batchId); } Window.open(sb.toString(), "_blanc", ""); } }