Java tutorial
/******************************************************************************* * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. * *******************************************************************************/ package com.liferay.ide.project.ui.upgrade.animated; import java.util.ArrayList; import java.util.List; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.Table; import com.liferay.ide.project.ui.ProjectUI; import com.liferay.ide.project.ui.upgrade.animated.UpgradeView.PageNavigatorListener; import com.liferay.ide.ui.util.SWTUtil; /** * @author Joye Luo */ public class SummaryPage extends Page implements SelectionChangedListener { public SummaryPage(Composite parent, int style, LiferayUpgradeDataModel dataModel) { super(parent, style, dataModel, SUMMARY_PAGE_ID, false); Composite container = new Composite(this, SWT.NONE); container.setLayout(new GridLayout(2, false)); container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); tableViewer = new TableViewer(container); tableViewer.setContentProvider(new TableViewContentProvider()); tableViewer.setLabelProvider(new TableViewLabelProvider()); tableViewer.getControl().setBackground(this.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); tableViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { final IStructuredSelection selection = (IStructuredSelection) event.getSelection(); if (!selection.isEmpty()) { if (selection.getFirstElement() instanceof TableViewElement) { final TableViewElement tableViewElement = (TableViewElement) selection.getFirstElement(); final int pageIndex = tableViewElement.pageIndex; PageNavigateEvent navEvent = new PageNavigateEvent(); navEvent.setTargetPage(pageIndex); for (PageNavigatorListener listener : naviListeners) { listener.onPageNavigate(navEvent); } } } } }); final Table table = tableViewer.getTable(); final GridData tableData = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1); tableData.heightHint = 175; table.setLayoutData(tableData); table.setLinesVisible(false); createImages(); } private TableViewer tableViewer; private Image imageQuestion; private class TableViewElement { private int pageIndex; private String pageTitle; private Image image; public TableViewElement(String pageTitle, Image image, int pageIndex) { this.pageTitle = pageTitle; this.image = image; this.pageIndex = pageIndex; } } private class TableViewContentProvider implements IStructuredContentProvider { @Override public void dispose() { } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } @Override public Object[] getElements(Object inputElement) { if (inputElement instanceof TableViewElement[]) { return (TableViewElement[]) inputElement; } return new Object[] { inputElement }; } } class TableViewLabelProvider extends LabelProvider { @Override public Image getImage(Object element) { TableViewElement tableViewElement = (TableViewElement) element; return tableViewElement.image; } @Override public String getText(Object element) { TableViewElement tableViewElement = (TableViewElement) element; return tableViewElement.pageTitle; } } private void createImages() { imageQuestion = ImageDescriptor .createFromURL(ProjectUI.getDefault().getBundle().getEntry("/images/question.png")).createImage(); } public void createSpecialDescriptor(Composite parent, int style) { final String descriptor = "Upgrade results are summarized in the following table.\n" + "If there are still some failed or incomplete steps, you can go back to finish them.\n" + "If all the steps are well-done, congratulations! You have finished the whole upgrade process.\n" + "Now you can try to deploy your projects to the Liferay Portal instance. " + "For more upgrade information, please see <a>From Liferay 6 to Liferay 7</a>."; String url = "https://dev.liferay.com/develop/tutorials/-/knowledge_base/7-0/from-liferay-6-to-liferay-7"; Link link = SWTUtil.createHyperLink(this, style, descriptor, 1, url); link.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1)); } @Override public String getPageTitle() { return "Summary"; } @Override public int getGridLayoutCount() { return 2; } @Override public boolean getGridLayoutEqualWidth() { return false; } @Override public void onSelectionChanged(int targetSelection) { setInput(); } private void setInput() { List<TableViewElement> TableViewElementList = new ArrayList<TableViewElement>(); TableViewElement[] tableViewElements; int pageNum = UpgradeView.getPageNumber(); for (int i = 1; i < pageNum - 1; i++) { Page page = UpgradeView.getPage(i); String pageTitle = page.getPageTitle(); int pageIndex = i; PageAction pageAction = page.getSelectedAction(); Image statusImage; if (pageTitle.equals("Ext and Theme Project")) { continue; } if (pageAction == null) { statusImage = imageQuestion; } else { statusImage = page.getSelectedAction().getBageImage(); } TableViewElement tableViewElement = new TableViewElement(pageTitle, statusImage, pageIndex); TableViewElementList.add(tableViewElement); } tableViewElements = TableViewElementList.toArray(new TableViewElement[TableViewElementList.size()]); tableViewer.setInput(tableViewElements); } }