@Override public void propertyChange(PropertyChangeEvent e) { super.propertyChange(e); String property = e.getPropertyName(); if (log.isDebugEnabled()) { log.debug("PropertyChange = " + property); } _parent.getXRefModel().propertyChange(e); _parent.getSignalModel().propertyChange(e); if (property.equals("length") || property.equals("UserName") || property.equals("portalCount")) { _parent.updateOpenMenu(); } }
@Override public void setValueAt(Object value, int row, int col) { if (log.isDebugEnabled()) { log.debug("setValueAt: row= " + row + ", col= " + col + ", value= " + value); } if (super.getRowCount() == row) { switch (col) { case SYSNAMECOL: OBlock block = _manager.createNewOBlock((String) value, tempRow[USERNAMECOL]); if (block == null) { block = _manager.getOBlock(tempRow[USERNAMECOL]); String name = (String) value + " / " + tempRow[USERNAMECOL]; if (block != null) { name = block.getDisplayName(); } else { block = _manager.getOBlock((String) value); if (block != null) { name = block.getDisplayName(); } } JOptionPane.showMessageDialog( null, Bundle.getMessage("CreateDuplBlockErr", name), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); return; } if (tempRow[SENSORCOL] != null) { if (!sensorExists(tempRow[SENSORCOL])) { JOptionPane.showMessageDialog( null, Bundle.getMessage("NoSuchSensorErr", tempRow[SENSORCOL]), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); } } block.setComment(tempRow[COMMENTCOL]); float len = 0.0f; try { len = IntlUtilities.floatValue(tempRow[LENGTHCOL]); } catch (ParseException e) { JOptionPane.showMessageDialog( null, Bundle.getMessage("BadNumber", tempRow[LENGTHCOL]), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); } if (tempRow[UNITSCOL].equals(Bundle.getMessage("cm"))) { block.setLength(len * 10.0f); block.setMetricUnits(true); } else { block.setLength(len * 25.4f); block.setMetricUnits(false); } if (tempRow[CURVECOL].equals(noneText)) { block.setCurvature(Block.NONE); } else if (tempRow[CURVECOL].equals(gradualText)) { block.setCurvature(Block.GRADUAL); } else if (tempRow[CURVECOL].equals(tightText)) { block.setCurvature(Block.TIGHT); } else if (tempRow[CURVECOL].equals(severeText)) { block.setCurvature(Block.SEVERE); } block.setPermissiveWorking( tempRow[PERMISSIONCOL].equals(Bundle.getMessage("Permissive"))); block.setBlockSpeedName(tempRow[SPEEDCOL]); if (tempRow[ERR_SENSORCOL] != null) { if (tempRow[ERR_SENSORCOL].trim().length() > 0) { if (!sensorExists(tempRow[ERR_SENSORCOL])) { JOptionPane.showMessageDialog( null, Bundle.getMessage("NoSuchSensorErr", tempRow[ERR_SENSORCOL]), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); } } } if (tempRow[REPORTERCOL] != null) { Reporter rep = null; try { rep = InstanceManager.reporterManagerInstance().getReporter(tempRow[REPORTERCOL]); if (rep != null) { block.setReporter(rep); block.setReportingCurrent( tempRow[REPORT_CURRENTCOL].equals(Bundle.getMessage("Current"))); } } catch (Exception ex) { log.error( "No Reporter named \"" + tempRow[REPORTERCOL] + "\" found. threw exception: " + ex); } if (rep == null) { JOptionPane.showMessageDialog( null, Bundle.getMessage("NoSuchReporterErr", tempRow[REPORTERCOL]), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); } block.setReporter(rep); } initTempRow(); fireTableDataChanged(); return; case DELETE_COL: // clear initTempRow(); fireTableRowsUpdated(row, row); return; case LENGTHCOL: try { _tempLen = IntlUtilities.floatValue(value.toString()); if (tempRow[UNITSCOL].equals(Bundle.getMessage("cm"))) { _tempLen *= 10f; } else { _tempLen *= 25.4f; } } catch (ParseException e) { JOptionPane.showMessageDialog( null, Bundle.getMessage("BadNumber", tempRow[LENGTHCOL]), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); } return; case UNITSCOL: if ((((Boolean) value).booleanValue())) { tempRow[UNITSCOL] = Bundle.getMessage("cm"); } else { tempRow[UNITSCOL] = Bundle.getMessage("in"); } fireTableRowsUpdated(row, row); return; case REPORT_CURRENTCOL: if (((Boolean) value).booleanValue()) { // toggle tempRow[REPORT_CURRENTCOL] = Bundle.getMessage("Current"); } else { tempRow[REPORT_CURRENTCOL] = Bundle.getMessage("Last"); } return; case PERMISSIONCOL: if (((Boolean) value).booleanValue()) { // toggle tempRow[PERMISSIONCOL] = Bundle.getMessage("Permissive"); } else { tempRow[PERMISSIONCOL] = Bundle.getMessage("Absolute"); } return; } tempRow[col] = (String) value; return; } String name = sysNameList.get(row); OBlock block = _manager.getBySystemName(name); switch (col) { case USERNAMECOL: OBlock b = _manager.getOBlock((String) value); if (b != null) { JOptionPane.showMessageDialog( null, Bundle.getMessage("CreateDuplBlockErr", block.getDisplayName()), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); return; } block.setUserName((String) value); fireTableRowsUpdated(row, row); return; case COMMENTCOL: block.setComment((String) value); fireTableRowsUpdated(row, row); return; case STATECOL: /* currently STATECOL is not editable. Maybe allow it and (or not) set the sensor? Why? int state = 0; try { state = Integer.valueOf((String) value); } catch (NumberFormatException nfe) { } if (state < 0) { state = -state; } block.setState(state % 255); fireTableRowsUpdated(row, row); */ return; case SENSORCOL: if (!block.setSensor((String) value)) { JOptionPane.showMessageDialog( null, Bundle.getMessage("NoSuchSensorErr", (String) value), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); } fireTableRowsUpdated(row, row); return; case LENGTHCOL: try { float len = IntlUtilities.floatValue(value.toString()); if (block.isMetric()) { block.setLength(len * 10.0f); } else { block.setLength(len * 25.4f); } fireTableRowsUpdated(row, row); } catch (ParseException e) { JOptionPane.showMessageDialog( null, Bundle.getMessage("BadNumber", value), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); } return; case UNITSCOL: block.setMetricUnits(((Boolean) value).booleanValue()); fireTableRowsUpdated(row, row); return; case CURVECOL: String cName = (String) value; if (cName.equals(noneText)) { block.setCurvature(Block.NONE); } else if (cName.equals(gradualText)) { block.setCurvature(Block.GRADUAL); } else if (cName.equals(tightText)) { block.setCurvature(Block.TIGHT); } else if (cName.equals(severeText)) { block.setCurvature(Block.SEVERE); } fireTableRowsUpdated(row, row); return; case ERR_SENSORCOL: boolean err = false; try { if (((String) value).trim().length() == 0) { block.setErrorSensor(null); err = true; } else { err = block.setErrorSensor((String) value); fireTableRowsUpdated(row, row); } } catch (Exception ex) { log.error("getSensor(" + (String) value + ") threw exception: " + ex); } if (err) { JOptionPane.showMessageDialog( null, Bundle.getMessage("NoSuchSensorErr", (String) value), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); } fireTableRowsUpdated(row, row); return; case REPORTERCOL: Reporter rep = null; try { rep = InstanceManager.reporterManagerInstance().getReporter((String) value); if (rep != null) { block.setReporter(rep); fireTableRowsUpdated(row, row); } } catch (Exception ex) { log.error("No Reporter named \"" + (String) value + "\" found. threw exception: " + ex); } if (rep == null) { JOptionPane.showMessageDialog( null, Bundle.getMessage("NoSuchReporterErr", tempRow[REPORTERCOL]), Bundle.getMessage("ErrorTitle"), JOptionPane.WARNING_MESSAGE); } block.setReporter(rep); fireTableRowsUpdated(row, row); return; case REPORT_CURRENTCOL: if (block.getReporter() != null) { block.setReportingCurrent(((Boolean) value).booleanValue()); fireTableRowsUpdated(row, row); } return; case PERMISSIONCOL: block.setPermissiveWorking(((Boolean) value).booleanValue()); fireTableRowsUpdated(row, row); return; case SPEEDCOL: block.setBlockSpeedName((String) value); fireTableRowsUpdated(row, row); return; case EDIT_COL: _parent.openBlockPathFrame(block.getSystemName()); return; case DELETE_COL: deleteBean(block); block = null; return; } super.setValueAt(value, row, col); }