/** * Set the current entity that we are browsing and whether the user should be warned or not * * @param entity * @param type * @param silent */ private void setEntity(ITridas entity, Class<? extends ITridas> type, Boolean silent) { if (!silent) { if (!warnLosingChanges()) { return; } } hasChanged = false; currentEntityType = type; currentEntity = entity; // Swapping entities so disable editing this.enableEditing(false); // derive a property list List<TridasEntityProperty> properties = TridasEntityDeriver.buildDerivationList(type); Property[] propArray = properties.toArray(new Property[properties.size()]); // set properties and load from entity propertiesPanel.setProperties(propArray); propertiesTable.expandAllBranches(true); // Add data to table from entity if (entity != null) { propertiesPanel.readFromObject(entity); propertiesPanel.setEnabled(true); editEntity.setVisible(true); } else { propertiesPanel.setEnabled(false); editEntity.setVisible(false); } }
/** * Called to enable editing Responsible for loading the duplicate copy into the editor * * @param enable */ @SuppressWarnings("unchecked") protected void enableEditing(boolean enable) { propertiesTable.setEditable(enable); // show/hide our buttons editEntitySave.setEnabled(true); editEntityCancel.setEnabled(true); editEntitySave.setVisible(enable); editEntityCancel.setVisible(enable); if (currentEntity == null) { editEntityText.setText(null); } else { editEntityText.setFont(editEntityText.getFont().deriveFont(Font.BOLD)); editEntityText.setText( enable ? I18n.getText("metadata.currentlyEditingThis") + " " + TridasTreeViewPanel.getFriendlyClassName(currentEntityType).toLowerCase() : I18n.getText("metadata.clickLockToEdit") + " " + TridasTreeViewPanel.getFriendlyClassName(currentEntityType).toLowerCase()); } editEntity.setSelected(enable); if (enable) { if (currentEntity == null) return; if (currentEntity instanceof ITridasSeries) temporaryEditingEntity = TridasCloner.cloneSeriesRefValues( (ITridasSeries) currentEntity, (Class<? extends ITridasSeries>) currentEntity.getClass()); else temporaryEditingEntity = TridasCloner.clone(currentEntity, currentEntity.getClass()); if (temporaryEditingEntity != null) propertiesPanel.readFromObject(temporaryEditingEntity); } else { temporaryEditingEntity = null; // don't display anything if we have nothingk! if (currentEntity != null) { propertiesPanel.readFromObject(currentEntity); } else { return; } } }