Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common
   * Development and Distribution License("CDDL") (collectively, the
   * "License"). You may not use this file except in compliance with the
  * License. You can obtain a copy of the License at
  * http://www.netbeans.org/cddl-gplv2.html
  * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
  * specific language governing permissions and limitations under the
  * License.  When distributing the software, include this License Header
  * Notice in each file and include the License file at
  * nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
  * particular file as subject to the "Classpath" exception as provided
  * by Sun in the GPL Version 2 section of the License file that
  * accompanied this code. If applicable, add the following below the
  * License Header, with the fields enclosed by brackets [] replaced by
  * your own identifying information:
  * "Portions Copyrighted [year] [name of copyright owner]"
  *
  * Contributor(s):
  *
  * The Original Software is NetBeans. The Initial Developer of the Original
  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
  * Microsystems, Inc. All Rights Reserved.
  *
  * If you wish your version of this file to be governed by only the CDDL
  * or only the GPL Version 2, indicate your decision by adding
  * "[Contributor] elects to include this software in this distribution
  * under the [CDDL or GPL Version 2] license." If you do not indicate a
  * single choice of license, a recipient has the option to distribute
  * your version of this file under either the CDDL, the GPL Version 2 or
  * to extend the choice of license to its licensees as provided above.
  * However, if you add GPL Version 2 code and therefore, elected the GPL
  * Version 2 license, then the option applies only if the new code is
  * made subject to such option by the copyright holder.
  */
 package org.netbeans.modules.cnd.makeproject.api.configurations;
 
 import java.util.List;
 
 public class PackagingConfiguration {
 
     private MakeConfiguration makeConfiguration;    // Types
     private StringConfiguration type;
     private BooleanConfiguration verbose;
     private StringConfiguration output;
     private StringConfiguration tool;
     private StringConfiguration options;
     private StringConfiguration topDir;
     // Constructors
     public PackagingConfiguration(MakeConfiguration makeConfiguration) {
         this. = makeConfiguration;
          = new StringConfiguration(null"Tar"); // NOI18N // Fixup: better default...
          = new BooleanConfiguration(nulltrue);
          = new VectorConfiguration<PackagerInfoElement>(null); // NOI18N
          = new VectorConfiguration<String>(null); // NOI18N
          = new VectorConfiguration<PackagerFileElement>(null); // NOI18N
          = new StringConfiguration(null""); // NOI18N
          = new StringConfiguration(null""); // NOI18N
          = new StringConfiguration(null""); // NOI18N
          = new StringConfiguration(nullnull); // NOI18N
         
         setDefaultValues();
     }
     
     public void setDefaultValues() {
         // Init default values
         String perm = MakeOptions.getInstance().getDefExePerm();
         String packageDir = "${PACKAGE_TOP_DIR}bin"// NOI18N
         String suffix = ""// NOI18N
            perm = MakeOptions.getInstance().getDefExePerm();
            packageDir = "${PACKAGE_TOP_DIR}bin"// NOI18N
        } else if (.isApplicationConfiguration()) {
            perm = MakeOptions.getInstance().getDefExePerm();
            packageDir = "${PACKAGE_TOP_DIR}bin"// NOI18N
                suffix = ".exe"// NOI18N
            }
        } else if (.isLibraryConfiguration()) {
            perm = MakeOptions.getInstance().getDefFilePerm();
            packageDir = "${PACKAGE_TOP_DIR}lib"// NOI18N
        }
        else {
            assert false;
        }
        PackagerFileElement elem = new PackagerFileElement(
                .,
                "${OUTPUT_PATH}" + suffix// NOI18N
                packageDir + "/${OUTPUT_BASENAME}" + suffix// NOI18N
                perm,
                MakeOptions.getInstance().getDefOwner(),
                MakeOptions.getInstance().getDefGroup());
        elem.setDefaultValue(true);
        .add(elem);
        
        // Add default info lists
        List<PackagerInfoElementinfoList = getInfo().getValue();
        List<PackagerDescriptorpackagerList = PackagerManager.getDefault().getPackagerList();
        for (PackagerDescriptor packagerDescriptor : packagerList) {
            if (packagerDescriptor.hasInfoList()) {
                infoList.addAll(packagerDescriptor.getDefaultInfoList(this));
            }
        }
    }
    
    public List<PackagerInfoElementgetHeaderSubList(String packager) {
        List<PackagerInfoElementlist = new ArrayList<PackagerInfoElement>();
        List<PackagerInfoElementheaderList = getInfo().getValue();
        for (PackagerInfoElement elem : headerList) {
            if (elem.getPackager().equals(packager)) {
                list.add(elem);
            }
        }
        return list;
    }
    
    public boolean isModified() {
        if (getType().getModified() || getOutput().getModified() || getOptions().getModified() || getVerbose().getModified() || getTool().getModified()) {
            return true;
        }
        if (.getValue().size() != 1) {
            return true;
        }
        for (PackagerFileElement elem : .getValue()) {
            if (!elem.isDefaultValue()) {
                return true;
            }
        }
        
        List<PackagerInfoElementheaderList = getHeaderSubList(getType().getValue());
        PackagerDescriptor packager = PackagerManager.getDefault().getPackager(getType().getValue());
        if (packager != null && packager.hasInfoList()) {
            if (headerList.size() != packager.getDefaultInfoList(this).size()) {
                return true;
            }
        }
        return false;
    }
    
    // MakeConfiguration
    public void setMakeConfiguration(MakeConfiguration makeConfiguration) {
        this. = makeConfiguration;
    }
        return ;
    }
    public StringConfiguration getType() {
        return ;
    }
    public void setType(StringConfiguration type) {
        PackagerDescriptor packager = PackagerManager.getDefault().getPackager(type.getValue());
        if (packager == null) {
            // Doesn't exist. Switch to a dummy packager...
            packager = new DummyPackager(type.getValue());
            PackagerManager.getDefault().addPackagingDescriptor(packager);
        }
        this. = type;
    }
    public BooleanConfiguration getVerbose() {
        return ;
    }
    public void setVerbose(BooleanConfiguration verbose) {
        this. = verbose;
    }
        return ;
    }
    public void setInfo(VectorConfiguration<PackagerInfoElementsvr4Header) {
        this. = svr4Header;
    }
        return ;
    }
    public void setAdditionalInfo(VectorConfiguration<StringadditionalInfo) {
        this. = additionalInfo;
    }
        return ;
    }
    public void setFiles(VectorConfiguration<PackagerFileElementfiles) {
        this. = files;
    }
    public void setOutput(StringConfiguration output) {
        this. = output;
    }
    public StringConfiguration getOutput() {
        return ;
    }
    public void setTool(StringConfiguration output) {
        this. = output;
    }
    public StringConfiguration getTool() {
        return ;
    }
    public void setOptions(StringConfiguration options) {
        this. = options;
    }
    public StringConfiguration getOptions() {
        return ;
    }
    
    public void setTopDir(StringConfiguration topDir) {
        this. = topDir;
    }
    public StringConfiguration getTopDir() {
        return ;
    }
    
    // Clone and assign
    public void assign(PackagingConfiguration conf) {
        //setMakeConfiguration(conf.getMakeConfiguration()); // MakeConfiguration should not be assigned
        getType().assign(conf.getType());
        getVerbose().assign(conf.getVerbose());
        getInfo().assign(conf.getInfo());
        getAdditionalInfo().assign(conf.getAdditionalInfo());
        getFiles().assign(conf.getFiles());
        getOutput().assign(conf.getOutput());
        getTool().assign(conf.getTool());
        getOptions().assign(conf.getOptions());
        getTopDir().assign(conf.getTopDir());
    }
    @Override
    public PackagingConfiguration clone() {
        clone.setType(getType().clone());
        clone.setVerbose(getVerbose().clone());
        clone.setInfo(getInfo().clone());
        clone.setAdditionalInfo(getAdditionalInfo().clone());
        clone.setFiles(getFiles().clone());
        clone.setOutput(getOutput().clone());
        clone.setTool(getTool().clone());
        clone.setOptions(getOptions().clone());
        clone.setTopDir(getTopDir().clone());
        return clone;
    }
    // Sheet
    public Sheet getGeneralSheet(MakeCustomizer makeCustomizer) {
        IntNodeProp intNodeprop;
        OutputNodeProp outputNodeProp;
        StringNodeProp toolNodeProp;
        StringNodeProp optionsNodeProp;
        Sheet sheet = new Sheet();
        Sheet.Set set = new Sheet.Set();
        set.setName("General"); // NOI18N
        set.setDisplayName(getString("GeneralTxt"));
        set.setShortDescription(getString("GeneralHint"));
        IntConfiguration tmpIntConfiguration = new PackagerIntConfiguration(null, 0, PackagerManager.getDefault().getDisplayNames(), null);
        
        set.put(intNodeprop = new PackagerIntNodeProp(tmpIntConfigurationtrue"PackageType"getString("PackageTypeName"), getString("PackageTypeHint"))); // NOI18N
        set.put(outputNodeProp = new OutputNodeProp(getOutput(), getOutputDefault(), "Output"getString("OutputTxt"), getString("OutputHint"))); // NOI18N
        String[] texts = new String[]{"Files"getString("FilesName"), getString("FilesHint")}; // NOI18N
        set.put(new PackagingNodeProp(thistexts)); // NOI18N
        set.put(toolNodeProp = new StringNodeProp(getTool(), getToolDefault(), "Tool"getString("ToolTxt1"), getString("ToolHint1"))); // NOI18N
        set.put(optionsNodeProp = new StringNodeProp(getOptions(), getOptionsDefault(), "AdditionalOptions"getString("AdditionalOptionsTxt1"), getString("AdditionalOptionsHint"))); // NOI18N
        set.put(new BooleanNodeProp(getVerbose(), true"Verbose"getString("VerboseName"), getString("VerboseHint"))); // NOI18N
        sheet.put(set);
        intNodeprop.getPropertyEditor().addPropertyChangeListener( = new TypePropertyChangeListener(makeCustomizeroutputNodeProptoolNodePropoptionsNodeProp));
        return sheet;
    }
    
    class PackagerIntConfiguration extends IntConfiguration {
        PackagerIntConfiguration(IntConfiguration masterint defString[] namesString[] options) {
            super(masterdefnamesoptions);
        }
        
        @Override
        public void setValue(String s) {
            if (s != null) {
                String displayName = s;
                String name = PackagerManager.getDefault().getName(displayName);
                if (name != null) {
                    getType().setValue(name);
                }
                else {
                    assert false;
                }
            }
        }
        @Override
        public int getValue() {
            int i = PackagerManager.getDefault().getNameIndex(getType().getValue());
            return i;
        }
    
    }
    
    class PackagerIntNodeProp extends IntNodeProp {
        public PackagerIntNodeProp(IntConfiguration intConfigurationboolean canWriteString unusedString nameString description) {
            super(intConfigurationcanWriteunusednamedescription);
        }
        
        
        @Override
        public Object getValue() {
            return Integer.valueOf(PackagerManager.getDefault().getNameIndex(getType().getValue()));
        }
    
        @Override
        public void setValue(Object v) {
            String displayName = (String)v;
            String name = PackagerManager.getDefault().getName(displayName);
            if (name != null) {
                getType().setValue(name);
            }
            else {
                assert false;
            }
        }
    }
        private MakeCustomizer makeCustomizer;
        private OutputNodeProp outputNodeProp;
        private StringNodeProp toolNodeProp;
        private StringNodeProp optionsNodeProp;
        TypePropertyChangeListener(MakeCustomizer makeCustomizerOutputNodeProp outputNodePropStringNodeProp toolNodePropStringNodeProp optionsNodeProp) {
            this. = makeCustomizer;
            this. = outputNodeProp;
            this. = toolNodeProp;
            this. = optionsNodeProp;
        }
        public void propertyChange(PropertyChangeEvent arg0) {
            .setCanWrite(getToolDefault().length() > 0);
            .setCanWrite(getToolDefault().length() > 0);
            if (!.getModified()) {
                .setDefaultValue(getOutputDefault());
                .reset();
            }
            if (!.getModified()) {
                .setDefaultValue(getToolDefault());
                .reset();
            }
            if (!.getModified()) {
                .setDefaultValue(getOptionsDefault());
                .reset();
            }
            .validate(); // this swill trigger repainting of the property
            .repaint();
        }
    }
    public String getOutputValue() {
        if (getOutput().getModified()) {
            return getOutput().getValue();
        } else {
            return getOutputDefault();
        }
    }
    
    public String getTopDirValue() {
        if (getTopDir().getModified()) {
            return getTopDir().getValue();
        } else {
            PackagerDescriptor packager = PackagerManager.getDefault().getPackager(getType().getValue());
            if (packager != null) {
                return packager.getTopDir(this);
            }
            else {
                return ""// NOI18N
            }
        }
    }
    
    public String getOutputName() {
        String outputName = IpeUtils.getBaseName(getMakeConfiguration().getBaseDir());
            outputName = outputName.toLowerCase();
            Platform platform = Platforms.getPlatform(getMakeConfiguration().getDevelopmentHost().getBuildPlatform());
            outputName = platform.getLibraryName(outputName);
        }
        outputName = createValidPackageName(outputName);
        return outputName;
    }
    
    private String getOutputDefault() {
        String outputPath = "${CND_DISTDIR}" + "/" + "${CND_CONF}" + "/" + "${CND_PLATFORM}" + "/package"// NOI18N
//        String outputName = getOutputName();
        PackagerDescriptor packager = PackagerManager.getDefault().getPackager(getType().getValue());
        if (!packager.isOutputAFolder()) {
            outputPath += "/" + packager.getOutputFileName(this) + "." + packager.getOutputFileSuffix(); // NOI18N
        }
        return outputPath;
    }
    public String getToolValue() {
        if (getTool().getModified()) {
            return getTool().getValue();
        } else {
            return getToolDefault();
        }
    }
    private String getToolDefault() {
        PackagerDescriptor packager = PackagerManager.getDefault().getPackager(getType().getValue());
        return packager.getDefaultTool();
    }
    public String getOptionsValue() {
        if (getOptions().getModified()) {
            return getOptions().getValue();
        } else {
            return getOptionsDefault();
        }
    }
    private String getOptionsDefault() {
        PackagerDescriptor packager = PackagerManager.getDefault().getPackager(getType().getValue());
        return packager.getDefaultOptions();
    }
    private static class OutputNodeProp extends StringNodeProp {
        public OutputNodeProp(StringConfiguration stringConfigurationString defString txt1String txt2String txt3) {
            super(stringConfigurationdeftxt1txt2txt3);
        }
        @Override
        public void setValue(String v) {
            if (IpeUtils.hasMakeSpecialCharacters(v)) {
                DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(getString("SPECIAL_CHARATERS_ERROR"), .));
                return;
            }
            super.setValue(v);
        }
    }
    public String[] getDisplayNames() {
//        return TYPE_DISPLAY_NAMES;
        return PackagerManager.getDefault().getDisplayNames(); // FIXUP?
    }
    public String getDisplayName() {
//        return TYPE_DISPLAY_NAMES[getType().getValue()];
        return PackagerManager.getDefault().getDisplayName(getType().getValue()); // FIXUP?
    }
    
    public String getName() {
        return getType().getValue();
    }
    
    public String expandMacros(String s) {
        s = .expandMacros(s);
        s = IpeUtils.expandMacro(s"${PACKAGE_TOP_DIR}"getTopDirValue().length() > 0 ? getTopDirValue() + "/" : ""); // NOI18N
        return s;
    }
    
    private String createValidPackageName(String name) {
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < name.length(); i++) {
            char c = name.charAt(i);
            if (c == '_') {
                continue;
            }
            else if (c == ' ') {
                continue;
            }
            stringBuilder.append(c);
        }
        return stringBuilder.toString();
    }
    
    
    public PackagerInfoElement findInfoElement(String name) {
        List<PackagerInfoElementinfoList = getInfo().getValue();
        for (PackagerInfoElement elem : infoList) {
            if (elem.getName().equals(name)) {
                return elem;
            }
        }
        return null;
    }
    
    public String findInfoValueName(String name) {
        List<PackagerInfoElementinfoList = getInfo().getValue();
        for (PackagerInfoElement elem : infoList) {
            if (elem.getName().equals(name)) {
                return elem.getValue();
            }
        }
        return null;
    }

    
Look up i18n strings here
    private static String getString(String s) {
        return NbBundle.getMessage(PackagingConfiguration.classs);
    }
New to GrepCode? Check out our FAQ X