All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.netbeans.modules.autoupdate.ui.DetailsPanel Maven / Gradle / Ivy

The newest version!
/*
 * 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.netbeans.modules.autoupdate.ui;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.JViewport;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.event.HyperlinkEvent;
import javax.swing.event.HyperlinkEvent.EventType;
import javax.swing.event.HyperlinkListener;
import javax.swing.text.StyledEditorKit;
import javax.swing.text.html.HTMLEditorKit;
import javax.swing.text.html.StyleSheet;
import org.openide.util.NbBundle;
import org.openide.util.RequestProcessor;

/**
 *
 * @author  Jiri Rechtacek, Radek Matous
 */
public class DetailsPanel extends JTextPane  {
    private JScrollPane scrollPane;
    private HeaderPanel header;
    private JLabel title;
    private JButton button;
    private JButton button2;
    private JPanel rightCornerHeader;
    private HyperlinkListener hyperlinkListener;
    private static final RequestProcessor RP = new RequestProcessor(DetailsPanel.class);
    
    public DetailsPanel() {
        initComponents2();
        HTMLEditorKit htmlkit = new HTMLEditorKitEx();
        // override the Swing default CSS to make the HTMLEditorKit use the
        // same font as the rest of the UI.
        
        // XXX the style sheet is shared by all HTMLEditorKits.  We must
        // detect if it has been tweaked by ourselves or someone else
        // (code completion javadoc popup for example) and avoid doing the
        // same thing again
        
        StyleSheet css = htmlkit.getStyleSheet();
        
        if (css.getStyleSheets() == null) {
            StyleSheet css2 = new StyleSheet();
            Font f = new JList().getFont();
            int size = f.getSize();
            css2.addRule(new StringBuffer("body { font-size: ").append(size) // NOI18N
                    .append("; font-family: ").append(f.getName()).append("; }").toString()); // NOI18N
            css2.addStyleSheet(css);
            htmlkit.setStyleSheet(css2);
        }
        
        setEditorKit(htmlkit);
        addHyperlinkListener(new HyperlinkListener() {
            @Override
            public void hyperlinkUpdate(HyperlinkEvent hlevt) {
                if (EventType.ACTIVATED == hlevt.getEventType()) {
                    if (hlevt.getURL () != null) {
                        Utilities.showURL(hlevt.getURL());
                    }
                }
            }
        });
        setEditable(false);
        setPreferredSize(new Dimension(300, 80));
        RP.post(new Runnable() {

            @Override
            public void run() {
                getAccessibleContext ().setAccessibleName (
                        NbBundle.getMessage (DetailsPanel.class, "ACN_DetailsPanel")); // NOI18N
            }
        });

        putClientProperty( JTextPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE );
    }

    @Override
    public void addNotify() {
        super.addNotify();
        getScrollPane();
    }
    
    @Override
    public void removeNotify () {
        setEditorKit (new StyledEditorKit ());
        if (hyperlinkListener != null) {
            removeHyperlinkListener (hyperlinkListener);
        }
        scrollPane = null;
        super.removeNotify ();
    }
    
    JScrollPane getScrollPane() {
        if (scrollPane == null) {
            Container p = getParent();
            if (p instanceof JViewport) {
                Container gp = p.getParent();
                if (gp instanceof JScrollPane) {
                    scrollPane = (JScrollPane)gp;
                }
            }            
        }
        return scrollPane;
    }
    
    public void setTitle(String value) {
        getScrollPane().setColumnHeaderView(value != null ? header : null);
        getScrollPane().setCorner(JScrollPane.UPPER_RIGHT_CORNER, value != null ? rightCornerHeader : null);
        if (value != null) {                            
            title.setText("

"+value+"

"); // NOI18N } } public void setActionListener(Action action) { button.setVisible(action != null); button.setEnabled(action != null); if (action != null) { button.setAction(action); button.getAccessibleContext ().setAccessibleDescription ( NbBundle.getMessage (DetailsPanel.class, "ACN_DetailsPanel_Button", button.getName ())); // NOI18N } } public void setActionListener2(Action action) { button2.setVisible(action != null); button2.setEnabled(action != null); if (action != null) { button2.setAction(action); button2.getAccessibleContext ().setAccessibleDescription ( NbBundle.getMessage (DetailsPanel.class, "ACN_DetailsPanel_Button", button2.getName ())); // NOI18N } } @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); title.setEnabled(enabled); button.setEnabled(enabled); } javax.swing.JEditorPane getDetails() { return this; } @Override public void setText(String t) { super.setText(t); validate(); } HeaderPanel getHeader() { return header; } private void initComponents2() { header = new HeaderPanel(); title = header.getTitle(); button = header.getButton(); button2 = header.getButton2(); Border outsideBorder = BorderFactory.createMatteBorder(0, 0, 1, 0, Color.gray); Border insideBorder = BorderFactory.createEmptyBorder(3, 3, 3, 3); CompoundBorder compoundBorder = BorderFactory.createCompoundBorder(outsideBorder, insideBorder); header.setBorder(compoundBorder); button.setVisible(false); button2.setVisible(false); rightCornerHeader = new JPanel(); rightCornerHeader.setBorder(compoundBorder); Color headerBgColor = UnitTable.getDarkerColor(getBackground()); header.setBackground(headerBgColor); if (button != null) { button.setOpaque(false); } if (button2 != null) { button2.setOpaque(false); } rightCornerHeader.setBackground(headerBgColor); setBorder(BorderFactory.createEmptyBorder(3, 3, 0, 0)); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy