/** * Show the current status of the field. * * @param step Which iteration step it is. * @param field Which field to display */ public void showStatus(int step, Field field) { if (!isVisible()) setVisible(true); stepLabel.setText(STEP_PREFIX + step); stats.reset(); fieldView.preparePaint(); for (int row = 0; row < field.getDepth(); row++) { for (int col = 0; col < field.getWidth(); col++) { Object creature; creature = field.getObjectAt(row, col); if (creature != null) { stats.incrementCount(creature.getClass()); fieldView.drawMark(col, row, getColor(creature.getClass())); } else { fieldView.drawMark(col, row, EMPTY_COLOR); } } } stats.countFinished(); population.setText(POPULATION_PREFIX + stats.getPopulationDetails(field)); fieldView.repaint(); }
@Override public void note(TFEvent e) { Field color = getModel().getColorField(); if (color != null && color != oldColor) { removeAll(); final FilterCategoryPanel p = new FilterCategoryPanel("Color Legend: '" + color.getName() + "'", color, this); add(p); Bag<String> data = DBUtils.countValues(getModel().getDB().all(), color); p.setData(data); p.dataList.addListSelectionListener( new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { ValueFilter f = (ValueFilter) p.defineFilter(); getModel().setGrayFilter(f, this); } }); oldColor = color; revalidate(); return; } else if (color == null) { removeAll(); } repaint(); }
private void setEditValue(PrefPanel pp, String name, PersistentBean bean, int mode) { Field fld = pp.getField(name); if (bean == null) fld.setValue(null); else { Object value = bean.getObject(name); fld.setValue(value); } setMode(fld, mode); }
public Object getChild(Object parent, int index) { ArrayList<Field> fields = ((Variable) parent).getFields(); Field f = (Field) fields.get(index); Object parentValue = ((Variable) parent).getValue(); try { return new Variable(f.getType(), f.getName(), f.get(parentValue)); } catch (IllegalAccessException e) { return null; } }
void updateList() { if (runned) { empty.removeAll(); list = new CheckBoxList(field.getClusters(), field.getNoise(), this); JScrollPane sp = new JScrollPane(); sp.getViewport().add(list); empty.add(sp); sp.repaint(); empty.validate(); } }
void buildConfigPanel() { try { Config config = playerObjects.getConfig(); for (Field field : config.getClass().getDeclaredFields()) { Annotation excludeAnnotation = field.getAnnotation(ReflectionHelper.Exclude.class); if (excludeAnnotation == null) { // so, this field is not excluded Class<?> fieldType = field.getType(); Method getMethod = getGetMethod(config.getClass(), field.getType(), field.getName()); if (getMethod != null) { Object value = getMethod.invoke(config); if (fieldType == String.class) { addTextBox(field.getName(), (String) value); } if (fieldType == boolean.class || fieldType == Boolean.class) { addBooleanComponent(field.getName(), (Boolean) value); } if (fieldType == float.class || fieldType == Float.class) { addTextBox(field.getName(), "" + value); } if (fieldType == int.class || fieldType == Integer.class) { addTextBox(field.getName(), "" + value); } } else { playerObjects .getLogFile() .WriteLine("No get accessor method for config field " + field.getName()); } } } } catch (Exception e) { playerObjects.getLogFile().WriteLine(Formatting.exceptionToStackTrace(e)); } configGridLayout.setRows(configGridLayout.getRows() + 2); configRevertButton = new JButton("Revert"); configReloadButton = new JButton("Reload"); configApplyButton = new JButton("Apply"); configSaveButton = new JButton("Save"); configRevertButton.addActionListener(new ConfigRevert()); configReloadButton.addActionListener(new ConfigReload()); configApplyButton.addActionListener(new ConfigApply()); configSaveButton.addActionListener(new ConfigSave()); configPanel.add(configRevertButton); configPanel.add(configReloadButton); configPanel.add(configApplyButton); configPanel.add(configSaveButton); }
private void setMode(Field fld, int mode) { if (mode == 1) setColor(fld, inheritableColor); else if (mode == 2) setColor(fld, inheritedColor); else setColor(fld, normalColor); fld.setEnabled(mode != 2); }
// runs the solve method public static void runSolve(Field f) { try { f.solve(0, 0); } catch (SolvedException e) { System.out.print("Error: " + e); } }
private void addPopups(Field fld) { fld.addPopupMenuAction( "local", new AbstractAction() { public void actionPerformed(ActionEvent e) { setMode((Field) e.getSource(), 0); } }); fld.addPopupMenuAction( "inheritable", new AbstractAction() { public void actionPerformed(ActionEvent e) { setMode((Field) e.getSource(), 1); } }); }
public boolean errorFound(Field f) { boolean bool = false; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (!(f.isEmpty(i, j))) { int val = f.model[i][j]; f.model[i][j] = 0; for (int y = 0; y < 9; y++) { if (val == f.model[i][y]) { grid[i][y].setBackground(Color.red); bool = true; } } for (int x = 0; x < 9; x++) { if (val == f.model[x][j]) { grid[x][j].setBackground(Color.red); bool = true; } } for (int x = (i / 3) * 3; x < ((i / 3) * 3) + 3; x++) { for (int y = (j / 3) * 3; y < ((j / 3) * 3) + 3; y++) { if (val == f.model[x][y]) { grid[x][y].setBackground(Color.red); bool = true; } } } f.model[i][j] = val; } } } return bool; }
// takes whats in the model and sends it to grid public void makeGrid(final Field f, final boolean isEditable) { for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { grid[i][j].setText(f.getString(i, j)); grid[i][j].setEditable(isEditable); } } }
private void setStoreValue(PrefPanel pp, String name, PersistentBean bean, boolean inheritable) { if (bean == null) return; Field fld = pp.getField(name); Object newValue = fld.getValue(); // if (newValue == null) return; // LOOK remove from store ?? // if it matches whats already stored (inherited or not), dont need to store it Object oldValue = bean.getObject(name); if (newValue == oldValue) return; if ((newValue != null) && newValue.equals(oldValue)) return; // otherwise store it if (!inheritable) bean.putObject(name, newValue); else if (isInheritable(fld)) bean.putObject("localMetadataInheritable." + name, newValue); else bean.putObject("localMetadata." + name, newValue); }
static byte[] getBData(KeyEvent e) { try { if (bdataField == null) { bdataField = SunToolkit.getField(java.awt.AWTEvent.class, "bdata"); } return (byte[]) bdataField.get(e); } catch (IllegalAccessException ex) { return null; } }
private MutableTreeNode populateAttributes(CavityDBObject obj) { DefaultMutableTreeNode tree = new DefaultMutableTreeNode("attrs"); Class cls = obj.getClass(); for (Field f : cls.getFields()) { int mod = f.getModifiers(); if (Modifier.isPublic(mod) && !Modifier.isStatic(mod)) { String fieldName = f.getName(); try { Object value = f.get(obj); tree.add( new DefaultMutableTreeNode(String.format("%s=%s", fieldName, String.valueOf(value)))); } catch (IllegalAccessException e) { // do nothing. } } } return tree; }
/** * Construct a variable * * @param aType the type * @param aName the name * @param aValue the value */ public Variable(Class<?> aType, String aName, Object aValue) { type = aType; name = aName; value = aValue; fields = new ArrayList<Field>(); // find all fields if we have a class type except we don't expand strings and null values if (!type.isPrimitive() && !type.isArray() && !type.equals(String.class) && value != null) { // get fields from the class and all superclasses for (Class<?> c = value.getClass(); c != null; c = c.getSuperclass()) { Field[] fs = c.getDeclaredFields(); AccessibleObject.setAccessible(fs, true); // get all nonstatic fields for (Field f : fs) if ((f.getModifiers() & Modifier.STATIC) == 0) fields.add(f); } } }
void checkRunned() { if (runned) { list.selectAll(); // Add all clusters to Field again contentpanel.resetColors(); // Reset the colors PointCategory.resetIndex(); // Reset the point index field.reset(); // Reset the field updateContentPanel(); empty.removeAll(); empty.validate(); runned = false; } }
private void setEditValueWithInheritence(String name, PersistentBean bean) { Field fld = metadataPP.getField(name); if (bean == null) { fld.setValue(null); return; } Object value = bean.getObject("localMetadata." + name); // local, non inheritable if (value != null) { fld.setValue(value); setMode(fld, 0); } else { value = bean.getObject("localMetadataInheritable." + name); // local, inheritable if (value != null) { fld.setValue(value); setMode(fld, 1); } else { value = bean.getObject(name); // inherited fld.setValue(value); setMode(fld, (value == null) ? 1 : 2); } } }
public void vec2FieldMagnitude(Field field, AffineTransform ftoi) { AffineTransform itof = null; try { itof = ftoi.createInverse(); } catch (NoninvertibleTransformException niv) { TDebug.println(0, "NoninvertibleTransformException: " + niv); } Vector3d v = new Vector3d(); Point2D.Double p = new Point2D.Double(); for (int j = 0, k = 0; j < height; ++j) for (int i = 0; i < width; ++i, ++k) { p.x = i; p.y = j; itof.transform(p, p); v = field.get(p.x, p.y, 0.0); f[k] = (float) Math.sqrt(v.x * v.x + v.y * v.y); } }
void revertConfig() { try { debug("reverting config panel"); Config config = playerObjects.getConfig(); for (Field field : config.getClass().getDeclaredFields()) { Annotation excludeAnnotation = field.getAnnotation(ReflectionHelper.Exclude.class); if (excludeAnnotation == null) { // so, this field is not excluded debug("field " + field.getName()); Class<?> fieldType = field.getType(); Method getMethod = getGetMethod(config.getClass(), field.getType(), field.getName()); if (getMethod != null) { debug(" ... found accessor method"); Object value = getMethod.invoke(config); String fieldname = field.getName(); Component component = componentByName.get(fieldname); if (component != null) { debug(" ... found component"); if (fieldType == String.class) { ((JTextField) component).setText((String) value); } if (fieldType == boolean.class || fieldType == Boolean.class) { ((JCheckBox) component).setSelected((Boolean) value); } if (fieldType == float.class || fieldType == Float.class) { ((JTextField) component).setText("" + value); } if (fieldType == int.class || fieldType == Integer.class) { ((JTextField) component).setText("" + value); } } } else { playerObjects .getLogFile() .WriteLine("No get accessor method for config field " + field.getName()); } } } } catch (Exception e) { playerObjects.getLogFile().WriteLine(Formatting.exceptionToStackTrace(e)); } }
private static void netxsurgery() throws Exception { /* Force off NetX codebase classloading. */ Class<?> nxc; try { nxc = Class.forName("net.sourceforge.jnlp.runtime.JNLPClassLoader"); } catch (ClassNotFoundException e1) { try { nxc = Class.forName("netx.jnlp.runtime.JNLPClassLoader"); } catch (ClassNotFoundException e2) { throw (new Exception("No known NetX on classpath")); } } ClassLoader cl = MainFrame.class.getClassLoader(); if (!nxc.isInstance(cl)) { throw (new Exception("Not running from a NetX classloader")); } Field cblf, lf; try { cblf = nxc.getDeclaredField("codeBaseLoader"); lf = nxc.getDeclaredField("loaders"); } catch (NoSuchFieldException e) { throw (new Exception("JNLPClassLoader does not conform to its known structure")); } cblf.setAccessible(true); lf.setAccessible(true); Set<Object> loaders = new HashSet<Object>(); Stack<Object> open = new Stack<Object>(); open.push(cl); while (!open.empty()) { Object cur = open.pop(); if (loaders.contains(cur)) continue; loaders.add(cur); Object curl; try { curl = lf.get(cur); } catch (IllegalAccessException e) { throw (new Exception("Reflection accessibility not available even though set")); } for (int i = 0; i < Array.getLength(curl); i++) { Object other = Array.get(curl, i); if (nxc.isInstance(other)) open.push(other); } } for (Object cur : loaders) { try { cblf.set(cur, null); } catch (IllegalAccessException e) { throw (new Exception("Reflection accessibility not available even though set")); } } }
public void vec2FieldZero(Field field, AffineTransform ftoi) { AffineTransform itof = null; try { itof = ftoi.createInverse(); } catch (NoninvertibleTransformException niv) { TDebug.println(0, "NoninvertibleTransformException: " + niv); } Vector3d v = new Vector3d(); Point2D.Double p = new Point2D.Double(); for (int j = 0, k = 0; j < height; ++j) for (int i = 0; i < width; ++i, ++k) { p.x = i; p.y = j; itof.transform(p, p); v = field.get(p.x, p.y, 0.0); if ((v.x == 0.0) && (v.y == 0.0)) f[k] = 1.0f; else f[k] = 0.0f; } }
void showClusterNoRepaint(PointCategory pc) { field.addAll(pc); }
void showCluster(PointCategory pc) { field.addAll(pc); repaintContentPanel(); }
void applyConfig() { debug("applying config from panel"); Config config = playerObjects.getConfig(); for (Field field : config.getClass().getDeclaredFields()) { Annotation excludeAnnotation = field.getAnnotation(ReflectionHelper.Exclude.class); if (excludeAnnotation == null) { // so, this field is not excluded debug("field " + field.getName()); Class<?> fieldType = field.getType(); Method setMethod = getSetMethod(config.getClass(), field.getType(), field.getName()); if (setMethod != null) { debug(" ... found accessor method"); String fieldname = field.getName(); Component component = componentByName.get(fieldname); if (component != null) { debug(" ... found component"); Object value = null; if (fieldType == String.class) { value = ((JTextField) component).getText(); } if (fieldType == boolean.class || fieldType == Boolean.class) { value = ((JCheckBox) component).isSelected(); } if (fieldType == float.class || fieldType == Float.class) { String stringvalue = (String) ((JTextField) component).getText(); try { value = Float.parseFloat(stringvalue); } catch (Exception e) { } } if (fieldType == int.class || fieldType == Integer.class) { String stringvalue = (String) ((JTextField) component).getText(); try { value = Integer.parseInt(stringvalue); } catch (Exception e) { } } if (value != null) { try { setMethod.invoke(config, value); } catch (Exception e) { playerObjects.getLogFile().WriteLine(Formatting.exceptionToStackTrace(e)); } } } if (fieldType == boolean.class || fieldType == Boolean.class) { // addBooleanComponent( field.getName(), (Boolean)value ); } } else { playerObjects .getLogFile() .WriteLine("No get accessor method for config field " + field.getName()); } } } revertConfig(); // in case some parses and stuff didn't work, so // user can see what is actually being read. playerObjects .getMainUI() .showInfo( "Config updated. Note that most changes require an AI restart. You can click on 'reloadAI' in 'Actions' tab to do so."); playerObjects.getConfig().configUpdated(); }
@Override public void actionPerformed(ActionEvent e) { if (e.getSource() == open) { if (isInProgress()) { systemIsBusy(); return; } checkRunned(); chooser = new JFileChooser(); chooser.setAcceptAllFileFilterUsed(false); chooser.setFileFilter(new InputFileFilter(false)); if (loadedFile != null) chooser.setSelectedFile(loadedFile); int returnValue = chooser.showOpenDialog(this); if (returnValue == JFileChooser.APPROVE_OPTION) { boolean approved = ((InputFileFilter) chooser.getFileFilter()).isFileApproved(chooser.getSelectedFile()); if (approved) { startProgress(); new MultiThread( new Runnable() { public void run() { try { loadedFile = chooser.getSelectedFile(); FileInputStream fis = new FileInputStream(loadedFile); InputParser ip = new InputParser(fis); if (ip.parseInput()) { field = new Field(new ArrayList<Point>(Arrays.asList(ip.getPoints()))); minAlgo.setText(String.valueOf(ip.minimumClusters)); maxAlgo.setText(String.valueOf(ip.maximumClusters)); } } catch (FileNotFoundException e1) { } contentpanel.center(); stopProgress(); } }) .start(); } } } else if (e.getSource() == center) { if (isInProgress()) { systemIsBusy(); return; } startProgress(); new MultiThread( new Runnable() { public void run() { contentpanel.removeMouseWheelListener(contentpanel); contentpanel.center(); contentpanel.addMouseWheelListener(contentpanel); stopProgressRepaint(); } }) .start(); } else if (e.getSource() == save) { if (isInProgress()) { systemIsBusy(); return; } checkRunned(); chooser = new JFileChooser(); chooser.setAcceptAllFileFilterUsed(false); chooser.setFileFilter(new InputFileFilter(true)); if (loadedFile != null) chooser.setSelectedFile(loadedFile); int returnValue = chooser.showSaveDialog(this); if (returnValue == JFileChooser.APPROVE_OPTION) { boolean approved = ((InputFileFilter) chooser.getFileFilter()).isFileApproved(chooser.getSelectedFile()); if (approved) { loadedFile = chooser.getSelectedFile(); boolean halt = loadedFile.exists(); if (halt) { int i = JOptionPane.showInternalConfirmDialog( c, "Are you sure you want to override this file?", "Warning", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); if (i == JOptionPane.YES_OPTION) { halt = false; } } if (!halt) { try { PrintWriter pw = new PrintWriter(new FileWriter(loadedFile)); pw.println("find " + field.getNumberOfClusters() + " clusters"); pw.println(field.size() + " points"); Object[] obj = field.toArray(); for (int i = 0; i < obj.length; i++) { Point p = (Point) obj[i]; pw.println(p.getX() + " " + p.getY()); } pw.close(); } catch (IOException e1) { } } } } } else if (e.getSource() == clear) { if (isInProgress()) { systemIsBusy(); return; } int i = JOptionPane.showInternalConfirmDialog( c, "Are you sure you want to clear the field?", "Warning", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE); checkRunned(); if (i == JOptionPane.YES_OPTION) { field = new Field(); updateContentPanel(); } } else if (e.getSource() == circle) { contentpanel.setSelectionMode(ContentPanel.SELECT_CIRCLE); } else if (e.getSource() == square) { contentpanel.setSelectionMode(ContentPanel.SELECT_SQUARE); } else if (e.getSource() == addacluster) { if (isInProgress()) { systemIsBusy(); return; } checkRunned(); contentpanel.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR)); } else if (e.getSource() == addnoise) { if (isInProgress()) { systemIsBusy(); return; } checkRunned(); final String s = JOptionPane.showInternalInputDialog( c, "How many points?", "Add noise", JOptionPane.QUESTION_MESSAGE); startProgress(); new MultiThread( new Runnable() { public void run() { if (s != null) { int number; try { number = Integer.parseInt(s); } catch (Exception ex) { number = 0; } int tillX = 1000000000; int tillY = 1000000000; int addX = 0; int addY = 0; if (inRectangle.isSelected()) { Rectangle r = field.getBoundingRectangle(); if (!(r.x1 == 0 && r.y1 == 0 && r.x2 == 0 && r.y2 == 0)) { tillX = r.x2 - r.x1; addX = r.x1; tillY = r.y2 - r.y1; addY = r.y1; } else { tillX = 500000000; tillY = 500000000; } } for (int i = 0; i < number; i++) { int x = random.nextInt(tillX); x += addX; int y; boolean busy = true; while (busy) { y = random.nextInt(tillY); y += addY; boolean inside = false; Object[] array = field.toArray(); for (int j = 0; j < field.size(); j++) { if (((Point) array[j]).compareTo(x, y)) { inside = true; break; } } if (!inside) { field.add(new Point(x, y)); busy = false; } } } } stopProgress(); } }) .start(); } else if (e.getSource() == run) { if (isInProgress()) { systemIsBusy(); return; } checkRunned(); startProgress(); runAlgo(); } }
void hideCluster(PointCategory pc) { field.removeAll(pc); repaintContentPanel(); }
void hideClusterNoRepaint(PointCategory pc) { field.removeAll(pc); }
private boolean isInheritable(Field fld) { return fld.getDeepEditComponent().getForeground().equals(inheritableColor); }
private void setColor(Field fld, Color color) { fld.getDeepEditComponent().setForeground(color); }
public Object visit(Field node) { if (node.getInit() == null) return layoutNullary("Field " + node.getName() + ":" + node.getType()); else return layoutUnary("Field " + node.getName() + ":" + node.getType(), node.getInit()); }