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);
}
}