Browse Source

Added option to supply custom scrollpane for OverlayScrollPane.

pull/188/head
weisj 5 years ago
parent
commit
4bfb1c1549
  1. 1
      core/build.gradle.kts
  2. 12
      core/src/main/java/com/github/weisj/darklaf/components/OverlayScrollPane.java
  3. 59
      core/src/test/java/ui/scrollPane/OverlayRSyntaxScrollPane.java

1
core/build.gradle.kts

@ -21,6 +21,7 @@ dependencies {
testImplementation("com.miglayout:miglayout-swing") testImplementation("com.miglayout:miglayout-swing")
testImplementation("org.swinglabs:swingx") testImplementation("org.swinglabs:swingx")
testImplementation("org.junit.jupiter:junit-jupiter-api") testImplementation("org.junit.jupiter:junit-jupiter-api")
testImplementation("com.fifesoft:rsyntaxtextarea:3.1.1")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
} }

12
core/src/main/java/com/github/weisj/darklaf/components/OverlayScrollPane.java

@ -95,12 +95,10 @@ public class OverlayScrollPane extends JLayeredPane implements PropertyChangeLis
* be controlled * be controlled
* with a pair of scrollbars. The scrollbars appear over the viewport. * with a pair of scrollbars. The scrollbars appear over the viewport.
* *
* @param view the view of the component. * @param scrollPane the scroll pane to use.
* @param scrollPane the scrollpane to use.
*/ */
public OverlayScrollPane(final JComponent view, final JScrollPane scrollPane) { public OverlayScrollPane(final JScrollPane scrollPane) {
this.scrollPane = scrollPane; this.scrollPane = scrollPane;
this.scrollPane.setViewportView(view);
setupScrollPane(scrollPane); setupScrollPane(scrollPane);
add(scrollPane, JLayeredPane.DEFAULT_LAYER); add(scrollPane, JLayeredPane.DEFAULT_LAYER);
@ -117,10 +115,12 @@ public class OverlayScrollPane extends JLayeredPane implements PropertyChangeLis
verticalScrollBar.putClientProperty(ScrollBarConstants.KEY_SCROLL_PANE_PARENT, this); verticalScrollBar.putClientProperty(ScrollBarConstants.KEY_SCROLL_PANE_PARENT, this);
JScrollBar horizontalScrollBar = createScrollBar(JScrollBar.HORIZONTAL); JScrollBar horizontalScrollBar = createScrollBar(JScrollBar.HORIZONTAL);
horizontalScrollBar.putClientProperty(ScrollBarConstants.KEY_SCROLL_PANE_PARENT, this); horizontalScrollBar.putClientProperty(ScrollBarConstants.KEY_SCROLL_PANE_PARENT, this);
scrollPane.setVerticalScrollBar(verticalScrollBar);
scrollPane.setHorizontalScrollBar(horizontalScrollBar);
scrollPane.addPropertyChangeListener(this); scrollPane.addPropertyChangeListener(this);
updateScrollPaneUI(); updateScrollPaneUI();
scrollPane.setVerticalScrollBar(verticalScrollBar);
scrollPane.setHorizontalScrollBar(horizontalScrollBar);
scrollPane.setColumnHeader(scrollPane.getColumnHeader());
scrollPane.setRowHeader(scrollPane.getRowHeader());
} }
protected JScrollBar createScrollBar(final int orientation) { protected JScrollBar createScrollBar(final int orientation) {

59
core/src/test/java/ui/scrollPane/OverlayRSyntaxScrollPane.java

@ -0,0 +1,59 @@
/*
* MIT License
*
* Copyright (c) 2020 Jannis Weis
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
*/
package ui.scrollPane;
import java.awt.*;
import javax.swing.*;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rtextarea.RTextScrollPane;
import ui.ComponentDemo;
import ui.DemoPanel;
import ui.DemoResources;
import com.github.weisj.darklaf.components.OverlayScrollPane;
import com.github.weisj.darklaf.util.StringUtil;
public class OverlayRSyntaxScrollPane implements ComponentDemo {
public static void main(final String[] args) {
ComponentDemo.showDemo(new OverlayRSyntaxScrollPane());
}
@Override
public JComponent createComponent() {
RSyntaxTextArea textArea = new RSyntaxTextArea(StringUtil.repeat(DemoResources.LOREM_IPSUM, 5));
RTextScrollPane sp = new RTextScrollPane(textArea);
OverlayScrollPane scrollPane = new OverlayScrollPane(sp);
return new DemoPanel(scrollPane, new BorderLayout(), 0);
}
@Override
public String getTitle() {
return "OverlayRSyntaxScrollPane Demo";
}
}
Loading…
Cancel
Save