/** Initialize attribute types and listeners. */ private void init() { // Initialize attribute types and their default visibility addProducerType( new AttributeType(this, "Neuron Activation", "getActivation", double.class, true)); addProducerType( new AttributeType(this, "Neuron Upper Bound", "getUpperBound", double.class, false)); addProducerType( new AttributeType(this, "Neuron Lower Bound", "getLowerBound", double.class, false)); addProducerType(new AttributeType(this, "Neuron Label", "getLabel", String.class, false)); addProducerType(new AttributeType(this, "Synapse", "getStrength", double.class, false)); addProducerType( new AttributeType( this, "NeuronGroupActivations", "getExternalActivations", double[].class, true)); addProducerType( new AttributeType(this, "NeuronGroupSpikes", "getSpikeIndexes", double[].class, true)); addProducerType( new AttributeType(this, "SynapseGroup", "getWeightVector", double[].class, true)); addConsumerType( new AttributeType(this, "Neuron Input Value", "setInputValue", double.class, true)); addConsumerType( new AttributeType(this, "Neuron Activation", "setActivation", double.class, false)); addConsumerType( new AttributeType(this, "Neuron Upper Bound", "setUpperBound", double.class, false)); addConsumerType( new AttributeType(this, "Neuron Lower Bound", "setLowerBound", double.class, false)); addConsumerType(new AttributeType(this, "Neuron Label", "setLabel", String.class, false)); addConsumerType(new AttributeType(this, "Synapse", "setStrength", double.class, false)); addConsumerType(new AttributeType(this, "NeuronGroup", "setInputValues", double[].class, true)); addConsumerType( new AttributeType(this, "SynapseGroup", "setWeightVector", double[].class, false)); network.addNeuronListener( new NeuronListener() { /** {@inheritDoc} */ public void neuronAdded(NetworkEvent<Neuron> e) { setChangedSinceLastSave(true); firePotentialAttributesChanged(); } /** {@inheritDoc} */ public void neuronTypeChanged(NetworkEvent<NeuronUpdateRule> e) { setChangedSinceLastSave(true); } /** {@inheritDoc} */ public void neuronMoved(NetworkEvent<Neuron> e) { setChangedSinceLastSave(true); } /** {@inheritDoc} */ public void neuronRemoved(NetworkEvent<Neuron> e) { setChangedSinceLastSave(true); firePotentialAttributesChanged(); fireAttributeObjectRemoved(e.getObject()); } @Override public void neuronChanged(NetworkEvent<Neuron> e) { setChangedSinceLastSave(true); } @Override public void labelChanged(NetworkEvent<Neuron> e) { setChangedSinceLastSave(true); } }); network.addSynapseListener( new SynapseListener() { public void synapseAdded(NetworkEvent<Synapse> networkEvent) { setChangedSinceLastSave(true); firePotentialAttributesChanged(); } public void synapseChanged(NetworkEvent<Synapse> networkEvent) { setChangedSinceLastSave(true); firePotentialAttributesChanged(); } public void synapseRemoved(NetworkEvent<Synapse> networkEvent) { setChangedSinceLastSave(true); firePotentialAttributesChanged(); } public void synapseTypeChanged(NetworkEvent<SynapseUpdateRule> networkEvent) { setChangedSinceLastSave(true); } }); }