Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipse-dev] Eclipse viewer architecture is slower than MVC??

Dinesh,

You already posted this issue in the newsgroup (which is the proper forum 
for such discussions) in the thread "Urgent - To win the war between eclipse and netbeans".
Please see my reply there.

Regards,
Nick Edgar
Eclipse UI Team Lead





Dinesh Varadharajan <DVARADHARAJAN@xxxxxxxxxxxxx>
Sent by: eclipse-dev-admin@xxxxxxxxxxx
08/06/02 11:36 PM
Please respond to eclipse-dev

 
        To:     eclipse-dev@xxxxxxxxxxx
        cc: 
        Subject:        [eclipse-dev] Eclipse viewer architecture is slower than MVC??


Hi,
In our company we are evaluating netbeans and eclipse for future
development. We wrote a simple program on each of this program and in
eclipse it is taking more time than in netbeans.

The netbeans is using MVC architecture and eclipse's adapter
architecture(Viewers ) are slower than MVC.

The program consists of a tree and a 100x100 table. The tree has alphabets
as items. Whenever the user clicks the alphabet all the table cells will 
be
filled up with that alphabet. We implemented MVC in Netbeans and viewers 
in
Eclipse. In netbeans it is taking 10milliseconds and eclipse is taking
3seconds.

Can any one fine tune this program to work fast as in netbeans.

The program is

import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;


public class viewer {
TableViewer tv = null;
Tree tree = null;
class Dummy{
String[] values;
public Dummy(){
values = new String[100];
}

public String get(int i){
return values[i];
}
public void set(int i, String value){
values[i] = value;
}
}
class ContentProvider implements IStructuredContentProvider{
public void dispose() {}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput){
}

public Object[] getElements(Object inputElement){
Dummy dummy = (Dummy)inputElement;
return dummy.values;
}
}

class LabelProvider implements ITableLabelProvider{
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
public String getColumnText(Object element, int columnIndex){
Dummy dummy = (Dummy)element;
return dummy.get(columnIndex);
}
public void addListener(ILabelProviderListener listener) {}
public void dispose() {}
public boolean isLabelProperty(Object element, String property){return
true; }
public void removeListener(ILabelProviderListener listener){}
}
public void run(){
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
tree = new Tree (shell, SWT.BORDER);
TreeItem root = new TreeItem (tree, 0);
root.setText("root");
for (int i= 65; i< 91; i++) {
TreeItem treeitem = new TreeItem (root, SWT.NONE);
byte[] data = new byte[1];
data[0] = (byte)i;
treeitem.setText(new String(data));
}
Table t1 = new Table(shell, SWT.NONE);
t1.setHeaderVisible(true);
t1.setLinesVisible(true);
for (int i = 0; i < 100; i++) {
TableColumn tableColumn = new TableColumn(t1, SWT.NULL);
tableColumn.setWidth(20);
tableColumn.setText("column "+i);
}
tv = new TableViewer(t1);
tv.setContentProvider(new ContentProvider());
tv.setLabelProvider(new LabelProvider());
for (int row = 0; row<100; row++){
Dummy foo = new Dummy();
for (int col=0; col<100; col++)
foo.set(col, "");
tv.add(foo);
}
tree.addSelectionListener(new TreeSelectionListener());
shell.open();
while (! shell.isDisposed()) {
if (! display.readAndDispatch()) display.sleep();
}
}
Class TreeSelectionListener implements SelectionListener{
public void widgetSelected(SelectionEvent e){
for (int row = 0; row<100; row++){
Dummy dummy = (Dummy) tv.getElementAt(row);
for (int col=0; col<100; col++)
dummy.set(col, tree.getSelection()[0].getText());
tv.refresh(dummy);
}
}
public void widgetDefaultSelected(SelectionEvent e){}
}
public static void main(String[] args) {
new viewer().run();
}
}

Thanks,
Dinesh




Back to the top