re-organize layout and fix drawing errors

This commit is contained in:
2020-10-17 12:44:33 +02:00
parent 675b2ed972
commit 664e99d09e
15 changed files with 142 additions and 704 deletions

View File

@ -64,6 +64,7 @@ import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
@ -149,6 +150,14 @@ public class DesignBrowser {
treeViewer.refresh();
}
});
} else if("WAVEFORMS".equals(evt.getPropertyName())) {
treeViewer.getTree().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
IWaveformDb database = waveformViewerPart.getDatabase();
treeViewer.setInput(Arrays.asList(database.isLoaded()?new IWaveformDb[]{database}:new IWaveformDb[]{new LoadingWaveformDb()}));
}
});
}
}
};
@ -177,7 +186,8 @@ public class DesignBrowser {
* @param parent the parent
*/
@PostConstruct
public void createComposite(Composite parent) {
public void createComposite(Composite parent, @Optional WaveformViewer waveformViewerPart) {
parent.setLayout(new FillLayout(SWT.HORIZONTAL));
sashForm = new SashForm(parent, SWT.BORDER | SWT.SMOOTH | SWT.VERTICAL);
top = new Composite(sashForm, SWT.NONE);
@ -193,6 +203,8 @@ public class DesignBrowser {
top.removeControlListener(this);
}
});
if(waveformViewerPart!=null)
setWaveformViewer(waveformViewerPart);
}
/**
@ -366,13 +378,11 @@ public class DesignBrowser {
* @param waveformViewerPart the waveform viewer part
* @return the status event
*/
@SuppressWarnings("unchecked")
@Inject @Optional
public void getActiveWaveformViewerEvent(@UIEventTopic(WaveformViewer.ACTIVE_WAVEFORMVIEW) WaveformViewer waveformViewerPart) {
if(this.waveformViewerPart!=null) {
this.waveformViewerPart.storeDesignBrowerState(new DBState());
}
if( this.waveformViewerPart == null || this.waveformViewerPart != waveformViewerPart ) {
if(this.waveformViewerPart!=null)
this.waveformViewerPart.storeDesignBrowerState(new DBState());
waveformViewerPart.addDisposeListener( new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent e) {
@ -384,7 +394,12 @@ public class DesignBrowser {
}
}
} );
setWaveformViewer(waveformViewerPart);
}
}
@SuppressWarnings("unchecked")
public void setWaveformViewer(WaveformViewer waveformViewerPart) {
this.waveformViewerPart=waveformViewerPart;
IWaveformDb database = waveformViewerPart.getDatabase();
Object input = treeViewer.getInput();

View File

@ -381,16 +381,12 @@ public class FileBrowserDialog extends TrayDialog {
class FileTreeLabelProvider implements ILabelProvider {
private List<ILabelProviderListener> listeners;
private Image file;
private Image dir;
public FileTreeLabelProvider() {
listeners = new ArrayList<ILabelProviderListener>();
}
public Image getImage(Object arg0) {
return ((File) arg0).isDirectory() ? folderImage : file;
return ((File) arg0).isDirectory() ? folderImage : fileImage;
}
public String getText(Object arg0) {
@ -402,16 +398,12 @@ public class FileBrowserDialog extends TrayDialog {
listeners.add(arg0);
}
@Override
public void dispose() {
// Dispose the images
if (dir != null)
dir.dispose();
if (file != null)
file.dispose();
}
public boolean isLabelProperty(Object arg0, String arg1) {
return false;
return true;
}
public void removeListener(ILabelProviderListener arg0) {

View File

@ -120,7 +120,9 @@ public class TransactionDetails {
* @param parent the parent
*/
@PostConstruct
public void createComposite(final Composite parent) {
public void createComposite(final Composite parent, @Optional WaveformViewer waveformViewerPart) {
this.waveformViewerPart=waveformViewerPart;
parent.setLayout(new GridLayout(1, false));
nameFilter = new Text(parent, SWT.BORDER);

View File

@ -41,6 +41,8 @@ import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener;
import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent;
import org.eclipse.e4.core.contexts.ContextInjectionFactory;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.core.di.extensions.Preference;
import org.eclipse.e4.core.services.events.IEventBroker;
@ -60,6 +62,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.events.FocusListener;
@ -69,6 +72,7 @@ import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
@ -96,20 +100,17 @@ import com.minres.scviewer.database.ui.IWaveformView;
import com.minres.scviewer.database.ui.TrackEntry;
import com.minres.scviewer.database.ui.TrackEntry.ValueDisplay;
import com.minres.scviewer.database.ui.TrackEntry.WaveDisplay;
import com.minres.scviewer.database.ui.WaveformColors;
import com.minres.scviewer.database.ui.swt.Constants;
import com.minres.scviewer.database.ui.swt.ToolTipContentProvider;
import com.minres.scviewer.database.ui.swt.ToolTipHelpTextProvider;
import com.minres.scviewer.database.ui.swt.WaveformViewFactory;
import com.minres.scviewer.database.ui.WaveformColors;
import com.minres.scviewer.e4.application.Messages;
import com.minres.scviewer.e4.application.internal.status.WaveStatusBarControl;
import com.minres.scviewer.e4.application.internal.ui.AbstractDesignBrowser;
import com.minres.scviewer.e4.application.internal.util.FileMonitor;
import com.minres.scviewer.e4.application.internal.util.IFileChangeListener;
import com.minres.scviewer.e4.application.internal.util.IModificationChecker;
import com.minres.scviewer.e4.application.preferences.PreferenceConstants;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.layout.FillLayout;
/**
* The Class WaveformViewerPart.
@ -169,20 +170,10 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
/** The factory. */
WaveformViewFactory factory = new WaveformViewFactory();
AbstractDesignBrowser browser = new AbstractDesignBrowser() {
@Override
protected void updateButtons() {
// TODO Auto-generated method stub
}
@Override
protected void initializeButtonListeners() {
// TODO Auto-generated method stub
}
};
DesignBrowser browser = null;
TransactionDetails detailsView = null;
/** The waveform pane. */
private IWaveformView waveformPane;
@ -280,19 +271,31 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
}
});
parent.setLayout(new FillLayout(SWT.HORIZONTAL));
SashForm sashFormTop = new SashForm(parent, SWT.NONE);
SashForm sashFormTop = new SashForm(parent, SWT.BORDER | SWT.SMOOTH);
Composite left = new Composite(sashFormTop, SWT.NONE);
left.setLayout(new FillLayout(SWT.HORIZONTAL));
browser.createComposite(left);
browser.setWaveformDb(database);
IEclipseContext ctx = myPart.getContext();
ctx.set(WaveformViewer.class, this);
ctx.set(IWaveformDb.class, database);
ctx.set(Composite.class, left);
browser = ContextInjectionFactory.make(DesignBrowser.class, ctx);
Composite right = new Composite(sashFormTop, SWT.NONE);
waveformPane = factory.createPanel(right);
//Composite right = new Composite(sashFormTop, SWT.NONE);
SashForm sashFormRight = new SashForm(sashFormTop, SWT.BORDER | SWT.SMOOTH | SWT.VERTICAL);
sashFormTop.setWeights(new int[] {25, 75});
Composite rightTop = new Composite(sashFormRight, SWT.NONE);
Composite rightBottom = new Composite(sashFormRight, SWT.NONE);
sashFormRight.setWeights(new int[] {80, 20});
waveformPane = factory.createPanel(rightTop);
ctx.set(Composite.class, rightBottom);
detailsView = ContextInjectionFactory.make(TransactionDetails.class, ctx);
waveformPane.setMaxTime(0);
setupColors();
//set selection to empty selection when opening a new waveformPane
@ -765,10 +768,10 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
// get selected transaction of a stream
ISelection selection = waveformPane.getSelection();
if (!selection.isEmpty()) {
List<Object> t = getISelection(selection);
if(t.get(0) instanceof ITx) {
ITx tx = (ITx) t.get(0);
TrackEntry te = (TrackEntry) t.get(1);
List<Object> sel = getISelection(selection);
if(sel.size()>1 && sel.get(0) instanceof ITx && sel.get(1) instanceof TrackEntry) {
ITx tx = (ITx) sel.get(0);
TrackEntry te = (TrackEntry) sel.get(1);
// get transaction id
persistedState.put(SELECTED_TX_ID, Long.toString(tx.getId()));
//get TrackEntry name