tikhomirov@501: /* tikhomirov@501: * Copyright (c) 2012 TMate Software Ltd tikhomirov@501: * tikhomirov@501: * This program is free software; you can redistribute it and/or modify tikhomirov@501: * it under the terms of the GNU General Public License as published by tikhomirov@501: * the Free Software Foundation; version 2 of the License. tikhomirov@501: * tikhomirov@501: * This program is distributed in the hope that it will be useful, tikhomirov@501: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@501: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@501: * GNU General Public License for more details. tikhomirov@501: * tikhomirov@501: * For information on how to redistribute this software under tikhomirov@501: * the terms of a license other than GNU General Public License tikhomirov@501: * contact TMate Software at support@hg4j.com tikhomirov@501: */ tikhomirov@501: package org.tmatesoft.hg.repo.ext; tikhomirov@501: tikhomirov@501: import org.tmatesoft.hg.internal.Internals; tikhomirov@501: import org.tmatesoft.hg.repo.HgRepoConfig; tikhomirov@501: tikhomirov@501: /** tikhomirov@501: * tikhomirov@501: * @author Artem Tikhomirov tikhomirov@501: * @author TMate Software Ltd. tikhomirov@501: */ tikhomirov@501: public abstract class HgExtensionsManager { tikhomirov@501: tikhomirov@501: public enum HgExt { tikhomirov@501: MQ ("mq"), Rebase("rebase"); tikhomirov@501: tikhomirov@501: private final String mercurialExtName; tikhomirov@501: tikhomirov@501: private HgExt(String nativeName) { tikhomirov@501: mercurialExtName = nativeName; tikhomirov@501: } tikhomirov@501: tikhomirov@501: String getNativeName() { tikhomirov@501: return mercurialExtName; tikhomirov@501: } tikhomirov@501: } tikhomirov@501: tikhomirov@501: private final Internals repo; tikhomirov@501: private MqManager mqExt; tikhomirov@501: private Rebase rebaseExt; tikhomirov@501: tikhomirov@501: protected HgExtensionsManager(Internals internalRepo) { tikhomirov@501: repo = internalRepo; tikhomirov@501: } tikhomirov@501: tikhomirov@501: public boolean isEnabled(HgExt e) { tikhomirov@501: HgRepoConfig cfg = repo.getRepo().getConfiguration(); tikhomirov@501: return cfg.getExtensions().isEnabled(e.getNativeName()); tikhomirov@501: } tikhomirov@501: tikhomirov@501: public Rebase getRebaseExtension() { tikhomirov@501: if (rebaseExt == null && isEnabled(HgExt.Rebase)) { tikhomirov@501: rebaseExt = new Rebase(repo); tikhomirov@501: } tikhomirov@501: return rebaseExt; tikhomirov@501: } tikhomirov@501: tikhomirov@501: public MqManager getMQ() { tikhomirov@501: if (mqExt == null && isEnabled(HgExt.MQ)) { tikhomirov@501: mqExt = new MqManager(repo); tikhomirov@501: } tikhomirov@501: return mqExt; tikhomirov@501: } tikhomirov@501: }