/** * @return an instanciation of the given content-type class name, or null if class wasn't found */ public static ContentType getContentTypeFromClassName(String contentTypeClassName) { if (contentTypeClassName == null) contentTypeClassName = getAvailableContentTypes()[DEFAULT_CONTENT_TYPE_INDEX]; ContentType ct = null; try { Class clazz = Class.forName(contentTypeClassName); ct = (ContentType) clazz.newInstance(); } catch (ClassNotFoundException cnfex) { if (jpicedt.Log.DEBUG) cnfex.printStackTrace(); JPicEdt.getMDIManager() .showMessageDialog( "The pluggable content-type you asked for (class " + cnfex.getLocalizedMessage() + ") isn't currently installed, using default instead...", Localizer.currentLocalizer().get("msg.LoadingContentTypeClass"), JOptionPane.ERROR_MESSAGE); } catch (Exception ex) { if (jpicedt.Log.DEBUG) ex.printStackTrace(); JPicEdt.getMDIManager() .showMessageDialog( ex.getLocalizedMessage(), Localizer.currentLocalizer().get("msg.LoadingContentTypeClass"), JOptionPane.ERROR_MESSAGE); } return ct; }
/** Determine whether the current user has Windows administrator privileges. */ public static boolean isWinAdmin() { if (!isWinPlatform()) return false; // for (String group : new com.sun.security.auth.module.NTSystem().getGroupIDs()) { // if (group.equals("S-1-5-32-544")) return true; // "S-1-5-32-544" is a well-known // security identifier in Windows. If the current user has it then he/she/it is an // administrator. // } // return false; try { Class<?> ntsys = Class.forName("com.sun.security.auth.module.NTSystem"); if (ntsys != null) { Object groupObj = SystemUtils.invoke( ntsys.newInstance(), ntsys.getDeclaredMethod("getGroupIDs"), (Object[]) null); if (groupObj instanceof String[]) { for (String group : (String[]) groupObj) { if (group.equals("S-1-5-32-544")) return true; // "S-1-5-32-544" is a well-known security identifier in Windows. If the // current user has it then he/she/it is an administrator. } } } } catch (ReflectiveOperationException e) { System.err.println(e); } return false; }
public static Field makeAccessible(Class<?> target, String fieldName) { try { final Field field = target.getDeclaredField(fieldName); return (Field) AccessController.doPrivileged( new PrivilegedExceptionAction<Object>() { public Object run() throws IllegalAccessException, InvocationTargetException { if (!field.isAccessible()) field.setAccessible(true); return field; } }); } catch (NoSuchFieldException | PrivilegedActionException e) { System.out.print(""); } // keep quiet IError.printStackTrace(e); } return null; }
/** * Handle the -biojava option * * <p>Command line syntax: art -biojava org.biojava.bio.seq.io.EmblLikeFormat foo.embl * * <p>BioJava formats: EmblLikeFormat, FastaFormat, GAMEFormat, GenbankFormat, PhredFormat */ private void handleBioJava(final String[] args) { if (args.length == 3) { final String class_name = args[1]; final String location = args[2]; final Document location_document = DocumentFactory.makeDocument(location); try { final Object biojava_object = Class.forName(class_name).newInstance(); final EntryInformation entry_information = Options.getArtemisEntryInformation(); final uk.ac.sanger.artemis.io.BioJavaEntry emblEntry; if (biojava_object instanceof SequenceFormat) { final SequenceFormat sequence_format = (SequenceFormat) biojava_object; emblEntry = new uk.ac.sanger.artemis.io.BioJavaEntry( entry_information, location_document, sequence_format); final Entry new_entry = new Entry(emblEntry); final EntryEdit new_entry_edit = makeEntryEdit(new_entry); new_entry_edit.setVisible(true); } else new MessageDialog(this, "not a SequenceFormat: " + class_name); } catch (IllegalAccessException e) { new MessageDialog(this, "cannot create class: " + class_name + " - IllegalAccessException"); } catch (ClassNotFoundException e) { new MessageDialog(this, "cannot find class: " + class_name); } catch (ClassCastException e) { new MessageDialog(this, class_name + " is not a sub-class of " + "SequenceFormat"); } catch (IOException e) { new MessageDialog(this, "I/O error while reading from " + location + ": " + e.getMessage()); } catch (NoSequenceException e) { new MessageDialog(this, location + " contained no sequence"); } catch (InstantiationException e) { new MessageDialog(this, "cannot instantiate " + class_name); } catch (OutOfRangeException e) { new MessageDialog( this, "read failed: one of the features in " + location + " has an out of range location: " + e.getMessage()); } } else new MessageDialog(this, "the -biojava option needs two arguments"); }
/** * Creates the customizer component for the node. * * @return the component, or null if there is no customizer */ @Override protected Component createCustomizer() { Class customizerClass = component.getBeanInfo().getBeanDescriptor().getCustomizerClass(); if (customizerClass == null) { if (javax.swing.JTable.class.isAssignableFrom(component.getBeanClass())) { customizerClass = TableCustomizer.class; } else { return null; } } Object customizerObject; try { customizerObject = customizerClass.newInstance(); } catch (InstantiationException e) { ErrorManager.getDefault().notify(ErrorManager.WARNING, e); return null; } catch (IllegalAccessException e) { ErrorManager.getDefault().notify(ErrorManager.WARNING, e); return null; } if (!(customizerObject instanceof Component) || !(customizerObject instanceof Customizer)) return null; if (customizerObject instanceof NodeCustomizer) ((NodeCustomizer) customizerObject).attach(component.getNodeReference()); // Issue 203352 - default values of properties must be initialized // before the customizer is shown/used component.ensureDefaultPropertyValuesInitialization(); Customizer customizer = (Customizer) customizerObject; customizer.setObject(component.getBeanInstance()); if (customizerObject instanceof FormAwareEditor) { // Hack - returns some property Node.Property prop = component.getProperties()[0].getProperties()[0]; ((FormAwareEditor) customizerObject) .setContext(component.getFormModel(), (FormProperty) prop); } customizer.addPropertyChangeListener( new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { FormProperty[] properties; if (evt.getPropertyName() != null) { FormProperty changedProperty = component.getBeanProperty(evt.getPropertyName()); if (changedProperty != null) properties = new FormProperty[] {changedProperty}; else return; // non-existing property? } else { properties = component.getAllBeanProperties(); evt = null; } updatePropertiesFromCustomizer(properties, evt); } }); // [undo/redo for customizer probably does not work...] return (Component) customizerObject; }