org.netbeans.modules.j2ee.clientproject.Utils Maven / Gradle / Ivy
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.modules.j2ee.clientproject;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import javax.swing.JComponent;
import org.netbeans.api.java.classpath.ClassPath;
import org.netbeans.api.java.platform.JavaPlatform;
import org.netbeans.api.java.platform.JavaPlatformManager;
import org.netbeans.api.java.platform.Specification;
import org.netbeans.api.java.source.ClasspathInfo;
import org.netbeans.api.java.source.SourceUtils;
import org.netbeans.modules.j2ee.clientproject.ui.customizer.MainClassChooser;
import org.openide.WizardDescriptor;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
import org.openide.util.NbBundle;
import org.openide.util.Parameters;
/**
* Utility methods for the module.
*/
public class Utils {
private static final Logger UI_LOGGER = Logger.getLogger("org.netbeans.ui.j2ee.clientproject"); // NOI18N
private static final Logger USG_LOGGER = Logger.getLogger("org.netbeans.ui.metrics.j2ee.clientproject"); // NOI18N
private static final String WIZARD_PANEL_CONTENT_DATA = WizardDescriptor.PROP_CONTENT_DATA; // NOI18N
private static final String WIZARD_PANEL_CONTENT_SELECTED_INDEX = WizardDescriptor.PROP_CONTENT_SELECTED_INDEX; //NOI18N;
private Utils() {
}
private static void setSteps(WizardDescriptor.Panel[] panels, String[] steps, String[] resultSteps, int offset) {
int n = steps == null ? 0 : steps.length;
for (int i = 0; i < panels.length; i++) {
final JComponent component = (JComponent) panels[i].getComponent();
String step = i < n ? steps[i] : null;
if (step == null) {
step = component.getName();
}
component.putClientProperty(WIZARD_PANEL_CONTENT_DATA, resultSteps);
component.putClientProperty(WIZARD_PANEL_CONTENT_SELECTED_INDEX, i);
component.getAccessibleContext().setAccessibleDescription(step);
resultSteps[i + offset] = step;
}
}
public static void setSteps(WizardDescriptor.Panel[] panels, String[] steps) {
setSteps(panels, steps, steps, 0);
}
/**
* Logs the UI gesture.
*
* @param bundle resource bundle to use for message
* @param message message key
* @param params message parameters, may be null
*/
public static void logUI(ResourceBundle bundle,String message, Object[] params) {
Parameters.notNull("message", message);
Parameters.notNull("bundle", bundle);
LogRecord logRecord = new LogRecord(Level.INFO, message);
logRecord.setLoggerName(UI_LOGGER.getName());
logRecord.setResourceBundle(bundle);
if (params != null) {
logRecord.setParameters(params);
}
UI_LOGGER.log(logRecord);
}
/**
* Logs feature usage.
*
* @param srcClass source class
* @param message message key
* @param params message parameters, may be null
*/
public static void logUsage(Class srcClass, String message, Object[] params) {
Parameters.notNull("message", message);
LogRecord logRecord = new LogRecord(Level.INFO, message);
logRecord.setLoggerName(USG_LOGGER.getName());
logRecord.setResourceBundle(NbBundle.getBundle(srcClass));
logRecord.setResourceBundleName(srcClass.getPackage().getName() + ".Bundle"); // NOI18N
if (params != null) {
logRecord.setParameters(params);
}
USG_LOGGER.log(logRecord);
}
/** Check if the given file object represents a source with the main method.
*
* @param fo source
* @return true if the source contains the main method
*/
public static boolean hasMainMethod(FileObject fo) {
// support for unit testing
if (MainClassChooser.unitTestingSupport_hasMainMethodResult != null) {
return MainClassChooser.unitTestingSupport_hasMainMethodResult.booleanValue ();
}
if (fo == null) {
// ??? maybe better should be thrown IAE
return false;
}
return !SourceUtils.getMainClasses(fo).isEmpty();
}
public static boolean isMainClass (final String className, ClassPath bootPath, ClassPath compilePath, ClassPath sourcePath) {
ClasspathInfo cpInfo = ClasspathInfo.create(bootPath, compilePath, sourcePath);
return SourceUtils.isMainClass(className, cpInfo);
}
/**
* Creates an URL of a classpath or sourcepath root
* For the existing directory it returns the URL obtained from {@link File#toUri()}
* For archive file it returns an URL of the root of the archive file
* For non existing directory it fixes the ending '/'
* @param root the file of a root
* @param offset a path relative to the root file or null (eg. src/ for jar:file:///lib.jar!/src/)"
* @return an URL of the root
* @throws MalformedURLException if the URL cannot be created
*/
public static URL getRootURL (File root, String offset) throws MalformedURLException {
URL url = root.toURI().toURL();
if (FileUtil.isArchiveFile(url)) {
url = FileUtil.getArchiveRoot(url);
} else if (!root.exists()) {
url = new URL(url.toExternalForm() + "/"); // NOI18N
}
if (offset != null) {
assert offset.endsWith("/"); //NOI18N
url = new URL(url.toExternalForm() + offset); // NOI18N
}
return url;
}
/**
* Returns the active platform used by the project or null if the active
* project platform is broken.
* @param activePlatformId the name of platform used by Ant script or null
* for default platform.
* @return active {@link JavaPlatform} or null if the project's platform
* is broken
*/
public static JavaPlatform getActivePlatform (final String activePlatformId) {
final JavaPlatformManager pm = JavaPlatformManager.getDefault();
if (activePlatformId == null) {
return pm.getDefaultPlatform();
}
else {
JavaPlatform[] installedPlatforms = pm.getPlatforms(null, new Specification ("j2se",null)); //NOI18N
for (int i=0; i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy