package eu.geclipse.traceview.internal; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import eu.geclipse.traceview.EventType; import eu.geclipse.traceview.IEvent; import eu.geclipse.traceview.ITraceView; import eu.geclipse.traceview.preferences.PreferenceConstants; import eu.geclipse.traceview.utils.AbstractEventMarker; public class DefaultEventMarker extends AbstractEventMarker { protected static boolean sendEventDraw; protected static boolean recvEventDraw; protected static boolean testEventDraw; protected static boolean otherEventDraw; protected static boolean sendEventFill; protected static boolean recvEventFill; protected static boolean testEventFill; protected static boolean otherEventFill; protected static Color sendEventFillColor; protected static Color recvEventFillColor; protected static Color testEventFillColor; protected static Color otherEventFillColor; protected static Color sendEventColor; protected static Color recvEventColor; protected static Color testEventColor; protected static Color otherEventColor; protected static Color messageColor; protected static IPropertyChangeListener listener; protected Color bgColor; protected Color fgColor; public DefaultEventMarker() { if (listener == null) { listener = new IPropertyChangeListener() { public void propertyChange( final PropertyChangeEvent event ) { handleProperyChanged( event ); } }; IPreferenceStore store = Activator.getDefault().getPreferenceStore(); store.addPropertyChangeListener( listener ); updatePropertiesFromPreferences(); } } @Override public Color getBackgroundColor( int type ) { return this.bgColor; } @Override public Color getForegroundColor( int type ) { return this.fgColor; } @Override public Color getMessageColor() { return messageColor; } @Override public int mark( final IEvent event ) { int result = 0; if (event.getType().equals( EventType.SEND )) { this.bgColor = sendEventFill ? sendEventFillColor : null; this.fgColor = sendEventDraw ? sendEventColor : null; result = Ellipse_Event; } else if (event.getType().equals( EventType.RECV )) { this.bgColor = recvEventFill ? recvEventFillColor : null; this.fgColor = recvEventDraw ? recvEventColor : null; result = Ellipse_Event; } else if (event.getType().equals( EventType.TEST )) { this.bgColor = testEventFill ? testEventFillColor : null; this.fgColor = testEventDraw ? testEventColor : null; result = Rectangle_Event; } else if (event.getType().equals( EventType.COLLECTIVE)) { if(event.getProcessId() == event.getPartnerProcessId()){ this.bgColor = sendEventFill ? sendEventFillColor : null; this.fgColor = sendEventDraw ? sendEventColor : null; }else{ this.bgColor = recvEventFill ? recvEventFillColor : null; this.fgColor = recvEventDraw ? recvEventColor : null; } result = Ellipse_Event; } else if (event.getType().equals( EventType.OTHER )) { this.bgColor = otherEventFill ? otherEventFillColor : null; this.fgColor = otherEventDraw ? otherEventColor : null; result = Diamond_Event; } return result; } void updatePropertiesFromPreferences() { IPreferenceStore store = Activator.getDefault().getPreferenceStore(); // event draw sendEventDraw = store.getBoolean( PreferenceConstants.P_SEND_EVENT + PreferenceConstants.P_DRAW ); recvEventDraw = store.getBoolean( PreferenceConstants.P_RECV_EVENT + PreferenceConstants.P_DRAW ); testEventDraw = store.getBoolean( PreferenceConstants.P_TEST_EVENT + PreferenceConstants.P_DRAW ); otherEventDraw = store.getBoolean( PreferenceConstants.P_RECV_EVENT + PreferenceConstants.P_DRAW ); // event fill sendEventFill = store.getBoolean( PreferenceConstants.P_SEND_EVENT + PreferenceConstants.P_FILL ); recvEventFill = store.getBoolean( PreferenceConstants.P_RECV_EVENT + PreferenceConstants.P_FILL ); testEventFill = store.getBoolean( PreferenceConstants.P_TEST_EVENT + PreferenceConstants.P_FILL ); otherEventFill = store.getBoolean( PreferenceConstants.P_RECV_EVENT + PreferenceConstants.P_FILL ); // message color messageColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, PreferenceConstants.P_MESSAGE + PreferenceConstants.P_COLOR ) ); // event color sendEventColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, PreferenceConstants.P_SEND_EVENT + PreferenceConstants.P_COLOR ) ); recvEventColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, PreferenceConstants.P_RECV_EVENT + PreferenceConstants.P_COLOR ) ); testEventColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, PreferenceConstants.P_TEST_EVENT + PreferenceConstants.P_COLOR ) ); otherEventColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, PreferenceConstants.P_OTHER_EVENT + PreferenceConstants.P_COLOR ) ); // event fill color sendEventFillColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, PreferenceConstants.P_SEND_EVENT + PreferenceConstants.P_FILL_COLOR ) ); recvEventFillColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, PreferenceConstants.P_RECV_EVENT + PreferenceConstants.P_FILL_COLOR ) ); testEventFillColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, PreferenceConstants.P_TEST_EVENT + PreferenceConstants.P_FILL_COLOR ) ); otherEventFillColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, PreferenceConstants.P_OTHER_EVENT + PreferenceConstants.P_FILL_COLOR ) ); } protected void handleProperyChanged( final PropertyChangeEvent event ) { IPreferenceStore store = Activator.getDefault().getPreferenceStore(); String property = event.getProperty(); // draw if( property.equals( PreferenceConstants.P_SEND_EVENT + PreferenceConstants.P_DRAW ) ) { sendEventDraw = store.getBoolean( property ); } else if( property.equals( PreferenceConstants.P_RECV_EVENT + PreferenceConstants.P_DRAW ) ) { recvEventDraw = store.getBoolean( property ); } else if( property.equals( PreferenceConstants.P_TEST_EVENT + PreferenceConstants.P_DRAW ) ) { testEventDraw = store.getBoolean( property ); } else if( property.equals( PreferenceConstants.P_OTHER_EVENT + PreferenceConstants.P_DRAW ) ) { otherEventDraw = store.getBoolean( property ); } // Fill else if( property.equals( PreferenceConstants.P_SEND_EVENT + PreferenceConstants.P_FILL ) ) { sendEventFill = store.getBoolean( property ); } else if( property.equals( PreferenceConstants.P_RECV_EVENT + PreferenceConstants.P_FILL ) ) { recvEventFill = store.getBoolean( property ); } else if( property.equals( PreferenceConstants.P_TEST_EVENT + PreferenceConstants.P_FILL ) ) { testEventFill = store.getBoolean( property ); } else if( property.equals( PreferenceConstants.P_OTHER_EVENT + PreferenceConstants.P_FILL ) ) { otherEventFill = store.getBoolean( property ); } // Message color else if( property.equals( PreferenceConstants.P_MESSAGE + PreferenceConstants.P_COLOR ) ) { messageColor.dispose(); messageColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, property ) ); } // Event Color else if( property.equals( PreferenceConstants.P_SEND_EVENT + PreferenceConstants.P_COLOR ) ) { sendEventColor.dispose(); sendEventColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, property ) ); } else if( property.equals( PreferenceConstants.P_RECV_EVENT + PreferenceConstants.P_COLOR ) ) { recvEventColor.dispose(); recvEventColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, property ) ); } else if( property.equals( PreferenceConstants.P_TEST_EVENT + PreferenceConstants.P_COLOR ) ) { testEventColor.dispose(); testEventColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, property ) ); } else if( property.equals( PreferenceConstants.P_OTHER_EVENT + PreferenceConstants.P_COLOR ) ) { otherEventColor.dispose(); otherEventColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, property ) ); } // Event Fill Color else if( property.equals( PreferenceConstants.P_SEND_EVENT + PreferenceConstants.P_FILL_COLOR ) ) { sendEventFillColor.dispose(); sendEventFillColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, property ) ); } else if( property.equals( PreferenceConstants.P_RECV_EVENT + PreferenceConstants.P_FILL_COLOR ) ) { recvEventFillColor.dispose(); recvEventFillColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, property ) ); } else if( property.equals( PreferenceConstants.P_TEST_EVENT + PreferenceConstants.P_FILL_COLOR ) ) { testEventFillColor.dispose(); testEventFillColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, property ) ); } else if( property.equals( PreferenceConstants.P_OTHER_EVENT + PreferenceConstants.P_FILL_COLOR ) ) { otherEventFillColor.dispose(); otherEventFillColor = new Color( Display.getDefault(), PreferenceConverter.getColor( store, property ) ); } try { ITraceView traceView = ( ITraceView )PlatformUI.getWorkbench() .getActiveWorkbenchWindow() .getActivePage() .showView( "eu.geclipse.traceview.views.TraceView" ); //$NON-NLS-1$ traceView.redraw(); } catch( PartInitException e ) { // TODO Auto-generated catch block e.printStackTrace(); } } }