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 com.liferay.ide.project.ui.ProjectUI; import com.liferay.ide.project.ui.upgrade.animated.UpgradeView.PageNavigatorListener; import com.liferay.ide.project.ui.upgrade.animated.UpgradeView.PageValidationListener; import com.liferay.ide.ui.util.SWTUtil; import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Font; 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.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; /** * @author Simon Jiang * @author Terry Jia */ public abstract class Page extends Composite implements SelectionChangedListener { public static final int DEFAULT_PAGE_WIDTH = 500; public static String WELCOME_PAGE_ID = "welcome"; public static String INIT_CONFIGURE_PROJECT_PAGE_ID = "initconfigureproject"; public static String UPGRADE_POM_PAGE_ID = "upgradepom"; public static String DESCRIPTORS_PAGE_ID = "descriptors"; public static String FINDBREACKINGCHANGES_PAGE_ID = "findbreackingchanges"; public static String BUILDSERVICE_PAGE_ID = "buildservice"; public static String LAYOUTTEMPLATE_PAGE_ID = "layouttemplate"; public static String CUSTOMJSP_PAGE_ID = "customjsp"; public static String EXTANDTHEME_PAGE_ID = "extandtheme"; public static String COMPILE_PAGE_ID = "compile"; public static String BUILD_PAGE_ID = "build"; public static String SUMMARY_PAGE_ID = "summary"; public static Control createHorizontalSpacer(Composite comp, int hSpan) { Label l = new Label(comp, SWT.NONE); GridData gd = new GridData(GridData.FILL_HORIZONTAL); gd.horizontalSpan = hSpan; l.setLayoutData(gd); return l; } public static Control createSeparator(Composite parent, int hspan) { Label label = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false, hspan, 1); label.setLayoutData(gd); return label; } protected boolean canBack = true; protected boolean canNext = true; protected LiferayUpgradeDataModel dataModel; protected final List<PageNavigatorListener> naviListeners = Collections .synchronizedList(new ArrayList<PageNavigatorListener>()); private String pageId; private int index; private String title = "title"; protected PageAction[] actions; private PageAction selectedAction; private PageAction pageFinishAction = new PageFinishAction(); private PageAction pageSkipAction = new PageSkipAction(); protected final List<PageValidationListener> pageValidationListeners = Collections .synchronizedList(new ArrayList<PageValidationListener>()); public Page(Composite parent, int style, LiferayUpgradeDataModel dataModel, String pageId, boolean hasFinishAndSkipAction) { super(parent, style); this.dataModel = dataModel; setLayout(new GridLayout(getGridLayoutCount(), getGridLayoutEqualWidth())); Label title = SWTUtil.createLabel(this, getPageTitle(), getGridLayoutCount()); title.setFont(new Font(null, "Times New Roman", 14, SWT.NORMAL)); createSpecialDescriptor(this, style); setPageId(pageId); if (hasFinishAndSkipAction) { setActions(new PageAction[] { pageFinishAction, pageSkipAction }); } } public void addPageNavigateListener(PageNavigatorListener listener) { this.naviListeners.add(listener); } public void addPageValidationListener(PageValidationListener listener) { this.pageValidationListeners.add(listener); } protected Label createLabel(Composite composite, String text) { Label label = new Label(composite, SWT.NONE); label.setText(text); GridDataFactory.generate(label, 2, 1); return label; } public void createSpecialDescriptor(Composite parent, int style) { } protected Text createTextField(Composite composite, int style) { Text text = new Text(composite, SWT.BORDER | style); text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); return text; } protected boolean doNextOperation() { return true; } @Override public boolean equals(Object obj) { Page comp = (Page) obj; return this.pageId == comp.pageId; } public PageAction[] getActions() { return this.actions; } public int getGridLayoutCount() { return 1; } public boolean getGridLayoutEqualWidth() { return true; } public final int getIndex() { return index; } public String getPageId() { return pageId; } public abstract String getPageTitle(); public PageAction getSelectedAction() { return selectedAction; } public PageAction getSelectedAction(String actionName) { if (actionName.equals("PageFinishAction")) { return pageFinishAction; } if (actionName.equals("PageSkipAction")) { return pageSkipAction; } return selectedAction; } protected final Image loadImage(String name) { URL url = null; try { url = ProjectUI.getDefault().getBundle().getEntry("images/" + name); } catch (Exception e) { } ImageDescriptor imagedesc = ImageDescriptor.createFromURL(url); Image image = imagedesc.createImage(); return image; } public String getTitle() { return this.title; } public final void setActions(PageAction[] actions) { this.actions = actions; } protected void setBackPage(boolean canBack) { this.canBack = canBack; } public void setIndex(int index) { this.index = index; } protected void setNextPage(boolean canBack) { this.canNext = canBack; } public void setPageId(String pageId) { this.pageId = pageId; } public void setSelectedAction(PageAction selectedAction) { this.selectedAction = selectedAction; } public void setTitle(String title) { this.title = title; } protected boolean showBackPage() { return canBack; } protected boolean showNextPage() { return canNext; } protected void triggerValidationEvent(PageValidateEvent pageValidationEvent) { pageValidationEvent.setPageId(getPageId()); for (PageValidationListener listener : pageValidationListeners) { listener.onValidation(pageValidationEvent); } } @Override public void onSelectionChanged(int targetSelection) { } }