
com.cedarsoft.spring.rcp.editor.ExtendedEditor Maven / Gradle / Ivy
The newest version!
package com.cedarsoft.spring.rcp.editor;
import com.cedarsoft.spring.rcp.events.SelectionEvent;
import com.cedarsoft.spring.rcp.events.UiUpdateEvent;
import com.cedarsoft.lookup.Lookup;
import com.cedarsoft.lookup.Lookups;
import org.jetbrains.annotations.NotNull;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.richclient.application.docking.jide.editor.AbstractEditor;
import javax.swing.JComponent;
/**
* Extended editor
*
* @param the type
*/
public abstract class ExtendedEditor extends AbstractEditor implements ApplicationListener {
private boolean updating = true;
private T editorObject;
@Override
public void componentFocusGained() {
getApplicationContext().publishEvent( new SelectionEvent( SelectionEvent.Type.SELECT, getSelectedObjects() ) );
super.componentFocusGained();
}
@Override
public void componentFocusLost() {
getApplicationContext().publishEvent( new SelectionEvent( SelectionEvent.Type.UNSELECT, getSelectedObjects() ) );
super.componentFocusLost();
}
@Override
public boolean isSaveAsSupported() {
return false;
}
/**
* Returns the currently selected objects.
* This default implementation returns the editor object.
*
* @return the currently selected objects
*/
@NotNull
protected Lookup getSelectedObjects() {
return Lookups.dynamicLookup( getEditorObject() );
}
protected JComponent control;
@Override
public JComponent getControl() {
if ( control == null ) {
control = createControl();
}
return control;
}
@Override
public final void onApplicationEvent( ApplicationEvent event ) {
if ( event instanceof UiUpdateEvent ) {
UiUpdateEvent.Type type = ( ( UiUpdateEvent ) event ).getType();
updating = type == UiUpdateEvent.Type.ACTIVATE_UPDATES;
}
if ( !updating ) {
return;
}
handleApplicationEvent( event );
}
/**
* @noinspection ParameterHidesMemberVariable
*/
@Override
public void initialize( Object editorObject ) {
this.editorObject = ( T ) editorObject;
}
@NotNull
public T getEditorObject() {
if ( editorObject == null ) {
throw new IllegalStateException( "No editor object set" );
}
return editorObject;
}
@NotNull
protected abstract JComponent createControl();
/**
* Is called when the editor should handle the event
*
* @param event the event that is handled
*/
protected abstract void handleApplicationEvent( @NotNull ApplicationEvent event );
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy