package edu.usc.cssl.tacit.crawlers.reddit.ui; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IToolBarManager; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.forms.widgets.FormToolkit; import org.eclipse.ui.forms.widgets.ScrolledForm; import org.eclipse.ui.forms.widgets.Section; import org.eclipse.ui.part.ViewPart; import edu.usc.cssl.tacit.common.ui.composite.from.TacitFormComposite; import edu.usc.cssl.tacit.common.ui.outputdata.OutputLayoutData; import edu.usc.cssl.tacit.crawlers.reddit.ui.internal.IRedditCrawlerViewConstants; import edu.usc.cssl.tacit.crawlers.reddit.ui.internal.RedditCrawlerViewImageRegistry; public class RedditCrawlerView extends ViewPart implements IRedditCrawlerViewConstants{ public static String ID = "edu.usc.cssl.tacit.crawlers.reddit.ui.redditview"; private Button crawlTrendingDataButton; private ScrolledForm form; private FormToolkit toolkit; private Button crawlLabeledButton; private Button crawlSearchResultsButton; private OutputLayoutData outputLayout; @Override public void createPartControl(Composite parent) { toolkit = createFormBodySection(parent, "Reddit Crawler"); Section section = toolkit.createSection(form.getBody(), Section.TITLE_BAR | Section.EXPANDED); GridDataFactory.fillDefaults().grab(true, false).span(3, 1).applyTo(section); section.setExpanded(true); // Create a composite to hold the other widgets ScrolledComposite sc = new ScrolledComposite(section, SWT.H_SCROLL | SWT.V_SCROLL); sc.setExpandHorizontal(true); sc.setExpandVertical(true); GridLayoutFactory.fillDefaults().numColumns(3).equalWidth(false).applyTo(sc); // Creates an empty to create a empty space TacitFormComposite.createEmptyRow(toolkit, sc); // Create a composite that can hold the other widgets Composite client = toolkit.createComposite(form.getBody()); GridLayoutFactory.fillDefaults().equalWidth(true).numColumns(1).applyTo(client); // Align the composite section to one column GridDataFactory.fillDefaults().grab(true, false).span(1, 1).applyTo(client); GridLayout layout = new GridLayout();// Layout creation layout.numColumns = 2; createCrawlGrop(toolkit, client); outputLayout = TacitFormComposite.createOutputSection(toolkit, client, form.getMessageManager()); // Add run and help button on the toolbar addButtonsToToolBar(); } private void createCrawlGrop(final FormToolkit toolkit, final Composite parent) { Group buttonComposite = new Group(parent, SWT.LEFT); buttonComposite.setText("Crawl"); //buttonComposite.setBackground(parent.getBackground()); buttonComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); GridLayout layout = new GridLayout(); layout.numColumns = 3; buttonComposite.setLayout(layout); buttonComposite.setForeground(parent.getForeground()); crawlTrendingDataButton = new Button(buttonComposite, SWT.RADIO); crawlTrendingDataButton.setText("Trending Data"); crawlTrendingDataButton.setSelection(true); crawlTrendingDataButton.setForeground(parent.getForeground()); crawlTrendingDataButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent arg0) { } @Override public void widgetDefaultSelected(SelectionEvent arg0) { // TODO Auto-generated method stub } }); crawlLabeledButton = new Button(buttonComposite, SWT.RADIO); crawlLabeledButton.setText("Labeled Data"); crawlLabeledButton.setSelection(false); crawlLabeledButton.setForeground(parent.getForeground()); crawlLabeledButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent arg0) { } @Override public void widgetDefaultSelected(SelectionEvent arg0) { // TODO Auto-generated method stub } }); crawlSearchResultsButton = new Button(buttonComposite, SWT.RADIO); crawlSearchResultsButton.setText("Search"); crawlSearchResultsButton.setSelection(false); crawlSearchResultsButton.setForeground(parent.getForeground()); crawlSearchResultsButton.addSelectionListener(new SelectionListener() { @Override public void widgetSelected(SelectionEvent arg0) { } @Override public void widgetDefaultSelected(SelectionEvent arg0) { // TODO Auto-generated method stub } }); } /** * * @param parent * @param title * @return - Creates a form body section for Naive Bayes Classifier */ private FormToolkit createFormBodySection(Composite parent, String title) { // Every interface requires a toolkit(Display) and form to store the components FormToolkit toolkit = new FormToolkit(parent.getDisplay()); form = toolkit.createScrolledForm(parent); toolkit.decorateFormHeading(form.getForm()); form.setText(title); GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(true) .applyTo(form.getBody()); return toolkit; } @Override public void setFocus() { form.setFocus(); } private void addButtonsToToolBar() { IToolBarManager mgr = form.getToolBarManager(); mgr.add(new Action() { @Override public ImageDescriptor getImageDescriptor() { return (RedditCrawlerViewImageRegistry.getImageIconFactory().getImageDescriptor(IMAGE_LRUN_OBJ)); } @Override public String getToolTipText() { return "Crawl"; } @Override public void run() { } }); Action helpAction = new Action() { @Override public ImageDescriptor getImageDescriptor() { return (RedditCrawlerViewImageRegistry.getImageIconFactory().getImageDescriptor(IMAGE_HELP_CO)); } @Override public String getToolTipText() { return "Help"; } @Override public void run() { }; }; mgr.add(helpAction); PlatformUI .getWorkbench() .getHelpSystem() .setHelp(helpAction, "edu.usc.cssl.tacit.crawlers.senate.ui.senate"); PlatformUI .getWorkbench() .getHelpSystem() .setHelp(form, "edu.usc.cssl.tacit.crawlers.senate.ui.senate"); form.getToolBarManager().update(true); } }