tikhomirov@215: /* tikhomirov@215: * Copyright (c) 2011 TMate Software Ltd tikhomirov@215: * tikhomirov@215: * This program is free software; you can redistribute it and/or modify tikhomirov@215: * it under the terms of the GNU General Public License as published by tikhomirov@215: * the Free Software Foundation; version 2 of the License. tikhomirov@215: * tikhomirov@215: * This program is distributed in the hope that it will be useful, tikhomirov@215: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@215: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@215: * GNU General Public License for more details. tikhomirov@215: * tikhomirov@215: * For information on how to redistribute this software under tikhomirov@215: * the terms of a license other than GNU General Public License tikhomirov@215: * contact TMate Software at support@hg4j.com tikhomirov@215: */ tikhomirov@215: package org.tmatesoft.hg.core; tikhomirov@215: tikhomirov@215: import org.tmatesoft.hg.util.CancelSupport; tikhomirov@215: import org.tmatesoft.hg.util.ProgressSupport; tikhomirov@215: tikhomirov@215: /** tikhomirov@215: * intentionally package-local, might be removed or refactored in future tikhomirov@215: * tikhomirov@215: * @author Artem Tikhomirov tikhomirov@215: * @author TMate Software Ltd. tikhomirov@215: */ tikhomirov@215: class HgAbstractCommand> implements ProgressSupport.Target, CancelSupport.Target { tikhomirov@215: private ProgressSupport progressHelper; tikhomirov@215: private CancelSupport cancelHelper; tikhomirov@215: tikhomirov@215: @SuppressWarnings("unchecked") tikhomirov@215: public T set(ProgressSupport ps) { tikhomirov@215: progressHelper = ps; tikhomirov@215: return (T) this; tikhomirov@215: } tikhomirov@215: tikhomirov@215: @SuppressWarnings("unchecked") tikhomirov@215: public T set(CancelSupport cs) { tikhomirov@215: cancelHelper = cs; tikhomirov@215: return (T) this; tikhomirov@215: } tikhomirov@215: tikhomirov@215: // shall not return null tikhomirov@215: protected ProgressSupport getProgressSupport(Object context) { tikhomirov@215: if (progressHelper != null) { tikhomirov@215: return progressHelper; tikhomirov@215: } tikhomirov@215: return ProgressSupport.Factory.get(context); tikhomirov@215: } tikhomirov@215: tikhomirov@322: // shall not return null if create is true tikhomirov@322: // CancelSupport from context, if any, takes precedence tikhomirov@322: protected CancelSupport getCancelSupport(Object context, boolean create) { tikhomirov@322: CancelSupport rv = CancelSupport.Factory.get(context, null); tikhomirov@322: if (rv != null) { tikhomirov@322: return rv; tikhomirov@322: } tikhomirov@215: if (cancelHelper != null) { tikhomirov@215: return cancelHelper; tikhomirov@215: } tikhomirov@322: if (create) { tikhomirov@322: return CancelSupport.Factory.get(null); tikhomirov@322: } tikhomirov@322: return null; tikhomirov@215: } tikhomirov@215: tikhomirov@215: }