package org.docear.plugin.services.features.documentretrieval.documentsearch.view;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
import org.docear.plugin.services.ServiceController;
import org.docear.plugin.services.features.documentretrieval.DocumentRetrievalController;
import org.docear.plugin.services.features.documentretrieval.documentsearch.DocumentSearchController;
import org.docear.plugin.services.features.documentretrieval.documentsearch.SearchModel;
import org.docear.plugin.services.features.documentretrieval.model.DocumentsModel;
import org.docear.plugin.services.features.documentretrieval.view.DocumentView;
public class DocumentSearchView extends DocumentView {
/**
*
*/
private static final long serialVersionUID = 1L;
private DocumentSearchPanel documentSearchPanel;
public DocumentSearchView(DocumentsModel model) {
super(model);
}
public DocumentSearchView() {
super();
}
@Override
// not used for document search engine
protected Container getNewRecommandationContainerComponent(String title) {
return new JPanel();
}
@Override
protected Container getNewEmptyContainerComponent() {
JPanel containerPanel = new JPanel();
containerPanel.setLayout(new BorderLayout());
containerPanel.setBackground(Color.WHITE);
containerPanel.setBorder(new EmptyBorder(0, 10, 0, 0));
JPanel panel = new JPanel();
panel.setBackground(Color.WHITE);
panel.setBorder(new LineBorder(Color.LIGHT_GRAY, 1, true));
panel.setLayout(new ListLayoutManager());
containerPanel.add(panel, BorderLayout.CENTER);
this.add(getSearchPanel(), BorderLayout.NORTH);
this.add(containerPanel, BorderLayout.CENTER);
// this.add(getStarBar(), BorderLayout.SOUTH);
return panel;
}
public Component getSearchPanel() {
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(getNewButtonBar(false), BorderLayout.NORTH);
if (ServiceController.getCurrentUser().isRecommendationsEnabled()) {
SearchModel searchModel = DocumentSearchController.getController().getSearchModel();
if (searchModel != null && searchModel.getId() != null) {
documentSearchPanel = new DocumentSearchPanel(searchModel.getModel().split(" "), searchModel.getId());
}
else {
documentSearchPanel = new DocumentSearchPanel();
}
panel.add(documentSearchPanel, BorderLayout.CENTER);
}
return panel;
}
private Container getPaginator() {
JPanel paginator = new JPanel();
paginator.setLayout(new BoxLayout(paginator,BoxLayout.X_AXIS));
paginator.setBackground(Color.WHITE);
paginator.add(Box.createHorizontalGlue());
int documentsavailable = DocumentRetrievalController.getController().getDocumentsAvailable();
int pages = (int) Math.ceil(Float.valueOf(documentsavailable) / 10F);
// paginator buttons not necessary for only one page
if (pages <= 1) {
return null;
}
for (int i=1; i<=pages; i++) {
JButton page = new JButton(String.valueOf(i));
if (i == DocumentSearchController.getController().getPage()) {
page.setEnabled(false);
}
page.setBackground(Color.WHITE);
page.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
DocumentSearchController.getController().setPage(Integer.valueOf(e.getActionCommand()));
DocumentSearchController.getController().search(DocumentSearchController.getController().getQuery());
}
});
paginator.add(page);
}
paginator.add(Box.createHorizontalGlue());
return paginator;
}
@Override
protected void addComponendAfterDocumentList(Container documentList) {
Container container = getPaginator();
if (container != null) {
documentList.add(getPaginator());
}
}
}