/******************************************************************************* * Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved. * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 * which accompanies this distribution. * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Oracle - initial API and implementation from Oracle TopLink ******************************************************************************/ package org.eclipse.persistence.tools.workbench.test.platformsplugin.ui; import java.awt.BorderLayout; import java.awt.Component; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import java.io.File; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import org.eclipse.persistence.tools.workbench.test.framework.TestWorkbenchContext; import org.eclipse.persistence.tools.workbench.framework.Plugin; import org.eclipse.persistence.tools.workbench.framework.app.ApplicationNode; import org.eclipse.persistence.tools.workbench.framework.context.WorkbenchContext; import org.eclipse.persistence.tools.workbench.platformsmodel.DatabasePlatformRepository; import org.eclipse.persistence.tools.workbench.platformsplugin.ui.PlatformsPluginFactory; import org.eclipse.persistence.tools.workbench.utility.io.FileTools; /** * */ public class DatabasePlatformRepositoryTabbedPropertiesPageTest { private ApplicationNode node; private Component page; private boolean pageIsCleared; public static void main(String[] args) throws Exception { new DatabasePlatformRepositoryTabbedPropertiesPageTest().exec(args); } public DatabasePlatformRepositoryTabbedPropertiesPageTest() { super(); } private void exec(String[] args) throws Exception { String platformsFileName; if ((args == null) || (args.length == 0)) { platformsFileName = "/platforms.xml"; } else { platformsFileName = args[0]; } WorkbenchContext wbContext = this.buildWorkbenchContext(); File platformsFile = FileTools.resourceFile(platformsFileName); Plugin plugin = PlatformsPluginFactory.instance().createPlugin(wbContext.getApplicationContext()); node = plugin.open(platformsFile, wbContext); page = node.propertiesPage(null); pageIsCleared = false; this.openWindow(); } private WorkbenchContext buildWorkbenchContext() { return new TestWorkbenchContext(); } private void openWindow() { JFrame window = new JFrame(this.getClass().getName()); window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); window.addWindowListener(this.buildWindowListener()); window.getContentPane().add(this.buildMainPanel(), "Center"); window.setSize(500, 400); window.setLocation(300, 300); window.setVisible(true); } private WindowListener buildWindowListener() { return new WindowAdapter() { public void windowClosing(WindowEvent e) { e.getWindow().setVisible(false); System.exit(0); } }; } private Component buildMainPanel() { JPanel mainPanel = new JPanel(new BorderLayout()); mainPanel.add(page, BorderLayout.CENTER); mainPanel.add(this.buildControlPanel(), BorderLayout.SOUTH); return mainPanel; } private Component buildControlPanel() { JPanel controlPanel = new JPanel(new GridLayout(1, 0)); controlPanel.add(this.buildClearButton()); controlPanel.add(this.buildPrintButton()); return controlPanel; } private JButton buildClearButton() { return new JButton(this.buildClearAction()); } private Action buildClearAction() { Action action = new AbstractAction("clear") { public void actionPerformed(ActionEvent event) { DatabasePlatformRepositoryTabbedPropertiesPageTest.this.clear(); } }; action.setEnabled(true); return action; } // toggle in and out the repository private void clear() { if (pageIsCleared) { node.propertiesPage(null); // ignore what is returned pageIsCleared = false; } else { node.releasePropertiesPage(page); pageIsCleared = true; } } private JButton buildPrintButton() { return new JButton(this.buildPrintAction()); } private Action buildPrintAction() { Action action = new AbstractAction("print") { public void actionPerformed(ActionEvent event) { DatabasePlatformRepositoryTabbedPropertiesPageTest.this.print(); } }; action.setEnabled(true); return action; } private void print() { DatabasePlatformRepository repository = this.repository(); System.out.println("repository: " + repository); System.out.println("\tfile: " + repository.getFile()); System.out.println("\tdefault platform: " + repository.getDefaultPlatform()); System.out.println("\tcomment: " + repository.getComment()); } private DatabasePlatformRepository repository() { return (DatabasePlatformRepository) node.getValue(); } }