/*
* JBoss, Home of Professional Open Source.
*
* See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing.
*
* See the AUTHORS.txt file distributed with this work for a full listing of individual contributors.
*/
package org.teiid.designer.diagram.ui.actions;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.action.MenuManager;
import org.teiid.designer.diagram.ui.DiagramUiConstants;
import org.teiid.designer.diagram.ui.DiagramUiPlugin;
import org.teiid.designer.diagram.ui.NotationChangeListener;
/**
* NotationChoiceRadioActionGroup
*
* @since 8.0
*/
public class NotationChoiceRadioActionGroup extends MenuManager
implements NotationChangeListener,
DiagramUiConstants {
private ArrayList<NotationChoice> arylNotationActions;
private NotationChangeListener nclNotationListener;
private String sNotationId;
private static final String NOTATION_SUBMENU_TITLE = "DiagramActions.NotationSubmenuTitle"; //$NON-NLS-1$
/**
* Construct an instance of NotationChoiceRadioActionGroup.
*
*/
public NotationChoiceRadioActionGroup( NotationChangeListener nclNotationListener, String currentNotationId ) {
this( nclNotationListener, Util.getString( NOTATION_SUBMENU_TITLE ), currentNotationId );
}
/**
* Construct an instance of NotationChoiceRadioActionGroup.
* @param text
*/
public NotationChoiceRadioActionGroup( NotationChangeListener nclNotationListener, String sText, String currentNotationId) {
super( sText );
this.nclNotationListener = nclNotationListener;
List<String> lstNotationExtensions
= DiagramUiPlugin.getDiagramNotationManager().getExtensionIds();
arylNotationActions = new ArrayList<NotationChoice>();
Iterator<String> it = lstNotationExtensions.iterator();
while ( it.hasNext() ) {
String sExtensionId = it.next();
String sExtensionDisplayName
= DiagramUiPlugin.getDiagramNotationManager()
.getExtensionDisplayName( sExtensionId );
// wire the choice to this class, the RadioActionGroup
NotationChoice action
= new NotationChoice( sExtensionId, sExtensionDisplayName, this );
// set initial checked state
if ( sExtensionId.equals( currentNotationId ) ) {
action.setChecked( true );
} else {
action.setChecked( false );
}
add(action);
arylNotationActions.add( action );
}
}
@Override
public void setNotationId( String sNotationId ) {
//Util.log( IStatus.INFO, "[NotationChoiceRadioActionGroup.setNotationId] TOP" ); //$NON-NLS-1$
// the action that was clicked will call our (the ActionGroup's)
// setNotatationId method; and we in turn will call the
// NotationChangeListener we got at construction time, probably our owner.
if ( this.sNotationId == null
|| ( sNotationId != null
&& this.sNotationId != null
&& !this.sNotationId.equals( sNotationId ) ) ) {
nclNotationListener.setNotationId( sNotationId );
this.sNotationId = sNotationId;
}
updateNotationActions( this.sNotationId );
}
public void updateNotationActions( String sNotationId ) {
Iterator<NotationChoice> it = arylNotationActions.iterator();
while( it.hasNext() ) {
NotationChoice ncAction = it.next();
if( ncAction.getExtensionId().equals( sNotationId ) ) {
ncAction.setChecked( true );
} else {
ncAction.setChecked( false );
}
}
}
public void setNotationChangeListener( NotationChangeListener nclNotationListener ) {
this.nclNotationListener = nclNotationListener;
}
public NotationChangeListener getNotationChangeListener() {
return nclNotationListener;
}
}