|
From: Markus B. <mba...@us...> - 2005-09-02 18:02:43
|
Update of /cvsroot/rubyeclipse/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/infoviews In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11904/src/org/rubypeople/rdt/internal/ui/infoviews Modified Files: RIView.java Log Message: Added Patch from Khaled who replaced the SWT list with a SWT table (fixes update bug). In addition to that a Refresh button has been added. Index: RIView.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.ui/src/org/rubypeople/rdt/internal/ui/infoviews/RIView.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** RIView.java 18 Aug 2005 22:02:10 -0000 1.4 --- RIView.java 2 Sep 2005 18:02:31 -0000 1.5 *************** *** 7,15 **** --- 7,23 ---- import java.io.InputStreamReader; import java.util.ArrayList; + import java.util.Collection; import java.util.Iterator; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; + import org.eclipse.jface.action.Action; + import org.eclipse.jface.action.IAction; + import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.util.IPropertyChangeListener; + import org.eclipse.jface.viewers.IStructuredContentProvider; + import org.eclipse.jface.viewers.IStructuredSelection; + import org.eclipse.jface.viewers.TableViewer; + import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; *************** *** 28,32 **** import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; - import org.eclipse.swt.widgets.List; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.part.PageBook; --- 36,39 ---- *************** *** 35,38 **** --- 42,46 ---- import org.rubypeople.rdt.internal.launching.RubyRuntime; import org.rubypeople.rdt.internal.ui.RubyPlugin; + import org.rubypeople.rdt.internal.ui.RubyPluginImages; import org.rubypeople.rdt.ui.PreferenceConstants; *************** *** 44,54 **** private Label interpreterNeededLabel, riNotFoundLabel; private Text searchStr; ! private List searchList; private Browser searchResult; - private String riCmd = null; private java.util.List possibleMatches = new ArrayList(); private SearchValue itemToSearch = new SearchValue(); private DescriptionUpdater descriptionUpdater = new DescriptionUpdater(); private RubyRuntime.Listener runtimeListener; /** --- 52,62 ---- private Label interpreterNeededLabel, riNotFoundLabel; private Text searchStr; ! private TableViewer searchListViewer; private Browser searchResult; private java.util.List possibleMatches = new ArrayList(); private SearchValue itemToSearch = new SearchValue(); private DescriptionUpdater descriptionUpdater = new DescriptionUpdater(); private RubyRuntime.Listener runtimeListener; + private ListContentProvider contentProvider = new ListContentProvider(); /** *************** *** 62,65 **** --- 70,76 ---- */ public void createPartControl(Composite parent) { + + contributeToActionBars() ; + pageBook = new PageBook(parent, SWT.NONE); *************** *** 90,94 **** super.keyPressed(e); if (e.keyCode == 16777218 || e.keyCode == 13) { // sorry didn't find the SWT constant for down arrow ! searchList.setFocus(); } else if (e.keyCode == SWT.ESC) { searchStr.setText(""); --- 101,105 ---- super.keyPressed(e); if (e.keyCode == 16777218 || e.keyCode == 13) { // sorry didn't find the SWT constant for down arrow ! searchListViewer.getTable().setFocus(); } else if (e.keyCode == SWT.ESC) { searchStr.setText(""); *************** *** 97,104 **** }); ! searchList = new List(panel, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); data = new GridData(GridData.FILL_VERTICAL | GridData.FILL_HORIZONTAL); ! searchList.setLayoutData(data); ! searchList.addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); --- 108,116 ---- }); ! searchListViewer = new TableViewer(panel, SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL); ! searchListViewer.setContentProvider(contentProvider); data = new GridData(GridData.FILL_VERTICAL | GridData.FILL_HORIZONTAL); ! searchListViewer.getTable().setLayoutData(data); ! searchListViewer.getTable().addSelectionListener(new SelectionListener() { public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); *************** *** 108,112 **** showSelectedItem(); } ! }); searchStr.addFocusListener(new FocusAdapter() { public void focusGained(FocusEvent e) { --- 120,124 ---- showSelectedItem(); } ! }); searchStr.addFocusListener(new FocusAdapter() { public void focusGained(FocusEvent e) { *************** *** 140,143 **** --- 152,169 ---- } + private void contributeToActionBars() { + IAction refreshAction = new Action() { + public void run() { + updatePage(); + } + }; + refreshAction.setText("Refresh"); + refreshAction.setToolTipText("Refresh list of names"); + refreshAction.setImageDescriptor(RubyPluginImages.TOOLBAR_REFRESH); + + IToolBarManager manager = getViewSite().getActionBars().getToolBarManager(); + manager.add(refreshAction); + } + private void updatePage() { RubyInterpreter interpreter = RubyRuntime.getDefault().getSelectedInterpreter(); *************** *** 154,163 **** private void showSelectedItem() { ! String[] selection = searchList.getSelection(); ! String searchText = (selection.length > 0) ? selection[0] : null; synchronized(itemToSearch) { itemToSearch.set(searchText); } } - public void dispose() { descriptionUpdater.requestStop(); --- 180,187 ---- private void showSelectedItem() { ! String searchText = (String)((IStructuredSelection)searchListViewer.getSelection()).getFirstElement(); synchronized(itemToSearch) { itemToSearch.set(searchText); } } public void dispose() { descriptionUpdater.requestStop(); *************** *** 166,170 **** } ! class SearchValue { String value = null; --- 190,194 ---- } ! private class SearchValue { String value = null; *************** *** 191,194 **** --- 215,219 ---- String line = null; int numberOfMatches = 0; + possibleMatches = new ArrayList() ; try { while ((line = reader.readLine()) != null) { *************** *** 215,228 **** } ! private void filterSearchList() { ! searchList.removeAll(); String text = searchStr.getText(); for (Iterator iter = possibleMatches.iterator(); iter.hasNext();) { String possibleMatch = (String) iter.next(); if (possibleMatch.indexOf(text) > -1 ) { ! searchList.add(possibleMatch); } } ! if (searchList.getItemCount() > 0) searchList.setSelection(0); showSelectedItem(); } --- 240,254 ---- } ! private void filterSearchList() { ! java.util.List filteredList = new ArrayList(); String text = searchStr.getText(); for (Iterator iter = possibleMatches.iterator(); iter.hasNext();) { String possibleMatch = (String) iter.next(); if (possibleMatch.indexOf(text) > -1 ) { ! filteredList.add(possibleMatch); } } ! searchListViewer.setInput(filteredList); ! if (filteredList.size() > 0) searchListViewer.getTable().setSelection(0); showSelectedItem(); } *************** *** 235,238 **** --- 261,276 ---- } + private final class ListContentProvider implements IStructuredContentProvider { + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + } + + public void dispose() { + } + + public Object[] getElements(Object inputElement) { + return ((Collection)inputElement).toArray(); + } + } + private final class DescriptionUpdater extends Thread { private String searchValue; |