/* * (c) Copyright 2010-2011 AgileBirds * * This file is part of OpenFlexo. * * OpenFlexo 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. * * OpenFlexo 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 OpenFlexo. If not, see <http://www.gnu.org/licenses/>. * */ package org.openflexo.drm.action; import java.io.File; import java.util.Collections; import java.util.Comparator; import java.util.Hashtable; import java.util.Vector; import java.util.logging.Logger; import org.openflexo.drm.DocItemFolder; import org.openflexo.drm.DocResourceCenter; import org.openflexo.drm.DocResourceManager; import org.openflexo.drm.Language; import org.openflexo.drm.helpset.DRMHelpSet; import org.openflexo.drm.helpset.HelpSetConfiguration; import org.openflexo.foundation.FlexoEditor; import org.openflexo.foundation.FlexoModelObject; import org.openflexo.foundation.action.FlexoAction; import org.openflexo.foundation.action.FlexoActionType; import org.openflexo.localization.FlexoLocalization; import org.openflexo.toolbox.FileResource; public class GenerateHelpSet extends FlexoAction<GenerateHelpSet, FlexoModelObject, FlexoModelObject> { private static final Logger logger = Logger.getLogger(GenerateHelpSet.class.getPackage().getName()); public static FlexoActionType<GenerateHelpSet, FlexoModelObject, FlexoModelObject> actionType = new FlexoActionType<GenerateHelpSet, FlexoModelObject, FlexoModelObject>( "generate_helpset", FlexoActionType.defaultGroup, FlexoActionType.NORMAL_ACTION_TYPE) { /** * Factory method */ @Override public GenerateHelpSet makeNewAction(FlexoModelObject focusedObject, Vector<FlexoModelObject> globalSelection, FlexoEditor editor) { return new GenerateHelpSet(focusedObject, globalSelection, editor); } @Override public boolean isVisibleForSelection(FlexoModelObject object, Vector<FlexoModelObject> globalSelection) { return isEnabledForSelection(object, globalSelection); } @Override public boolean isEnabledForSelection(FlexoModelObject object, Vector<FlexoModelObject> globalSelection) { return object != null && (!(object instanceof DocItemFolder) || ((DocItemFolder) object).isRootFolder()); } }; static { FlexoModelObject.addActionForClass(actionType, DocResourceCenter.class); FlexoModelObject.addActionForClass(actionType, DocItemFolder.class); } private String baseName; private String note; private Vector<HelpSetConfiguration> configurations; private Hashtable<HelpSetConfiguration, DRMHelpSet> generatedHelpsets; // private DRMHelpSet newHelpSet; // private Language language; protected GenerateHelpSet(FlexoModelObject focusedObject, Vector<FlexoModelObject> globalSelection, FlexoEditor editor) { super(actionType, focusedObject, globalSelection, editor); configurations = new Vector<HelpSetConfiguration>(); generatedHelpsets = new Hashtable<HelpSetConfiguration, DRMHelpSet>(); } /* * public DRMHelpSet getNewHelpSet() { return newHelpSet; } * * public Language getLanguage() { return language; } * * public void setLanguage(Language language) { this.language = language; } */ public String getBaseName() { if (baseName == null) { baseName = "FlexoHelp"; } return baseName; } public void setBaseName(String baseName) { this.baseName = baseName; } public String getNote() { return note; } public void setNote(String note) { this.note = note; } @Override protected void doAction(Object context) { logger.info("GenerateHelpSet"); makeFlexoProgress(FlexoLocalization.localizedForKey("generating_helpset"), configurations.size() + 2); getHelpsetDirectory().mkdirs(); for (HelpSetConfiguration config : configurations) { DRMHelpSet helpSet = new DRMHelpSet(DocResourceManager.instance().getDocResourceCenter(), getHelpsetDirectory(), getBaseName(), config); logger.info("Generating " + helpSet.getLocalizedName()); setProgress(FlexoLocalization.localizedForKey("generating") + " " + helpSet.getHelpSetDirectory().getName()); helpSet.generate(getFlexoProgress()); generatedHelpsets.put(config, helpSet); } vectorOfGeneratedHelpset = null; hideFlexoProgress(); } private File _helpSetDirectory; private File getHelpsetDirectory() { if (_helpSetDirectory == null) { _helpSetDirectory = new FileResource("Help"); } return _helpSetDirectory; } public void addToGeneration(String aTitle, Language aLanguage, String aDistributionName, Vector<DocItemFolder> someDocItemFolders) { configurations.add(new HelpSetConfiguration(aTitle, aLanguage, aDistributionName, someDocItemFolders)); } private Vector<DRMHelpSet> vectorOfGeneratedHelpset; public Vector<DRMHelpSet> getVectorOfGeneratedHelpset() { if (vectorOfGeneratedHelpset == null) { vectorOfGeneratedHelpset = new Vector<DRMHelpSet>(); vectorOfGeneratedHelpset.addAll(generatedHelpsets.values()); Collections.sort(vectorOfGeneratedHelpset, new Comparator<DRMHelpSet>() { @Override public int compare(DRMHelpSet o1, DRMHelpSet o2) { int result = o1.getDistributionName().compareTo(o2.getDistributionName()); if (result != 0) { return result; } return o1.getLanguage().compareTo(o2.getLanguage()); } }); } return vectorOfGeneratedHelpset; } public Vector<HelpSetConfiguration> getConfigurations() { return configurations; } }