blob: 6d6b4b449ba5fb3ab6374c70d8d3bc2a4cd342ca [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.chemistry.opencmis.workbench;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.TreeSet;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UIManager;
import org.apache.chemistry.opencmis.commons.impl.IOUtils;
public class InfoDialog extends JDialog {
private static final long serialVersionUID = 1L;
public InfoDialog(Frame owner) {
super(owner, "Info", true);
createGUI();
}
private void createGUI() {
setPreferredSize(new Dimension(800, 500));
setMinimumSize(new Dimension(600, 400));
setLayout(new BoxLayout(getContentPane(), BoxLayout.PAGE_AXIS));
JPanel topPanel = new JPanel(new FlowLayout());
JLabel cmisLogo = new JLabel(ClientHelper.getIcon("icon.png"));
topPanel.add(cmisLogo);
Font labelFont = UIManager.getFont("Label.font");
Font titleFont = labelFont.deriveFont(Font.BOLD, labelFont.getSize2D() * 2f);
JLabel titleLabel = new JLabel("CMIS Workbench");
titleLabel.setFont(titleFont);
topPanel.add(titleLabel);
add(topPanel);
StringBuilder readme = new StringBuilder();
readme.append(loadText("/META-INF/README-cmis-workbench.txt", "CMIS Workbench"));
readme.append("\n---------------------------------------------------------\n");
readme.append("\nCurrent System Properties:\n\n");
Properties sysProps = System.getProperties();
for (Object key : new TreeSet<Object>(sysProps.keySet())) {
readme.append(key).append(" = ").append(sysProps.get(key)).append('\n');
}
readme.append("\n---------------------------------------------------------\n");
readme.append(loadText("/META-INF/build-timestamp.txt", ""));
JTextArea ta = new JTextArea(readme.toString());
ta.setEditable(false);
ta.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
JScrollPane readmePane = new JScrollPane(ta);
readmePane.setBorder(BorderFactory.createEmptyBorder(0, 5, 5, 5));
add(readmePane);
ClientHelper.installEscapeBinding(this, getRootPane(), false);
setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
pack();
setLocationRelativeTo(null);
}
public void showDialog() {
setVisible(true);
}
public void hideDialog() {
setVisible(false);
}
private String loadText(String file, String defaultText) {
InputStream stream = getClass().getResourceAsStream(file);
if (stream != null) {
try {
return IOUtils.readAllLines(stream);
} catch (IOException e) {
return defaultText;
}
}
return defaultText;
}
}