|
@@ -1,65 +0,0 @@
|
|
|
-package net.ranides.assira.ui.primitives;
|
|
|
|
|
-
|
|
|
|
|
-import net.ranides.assira.generic.Ref;
|
|
|
|
|
-import net.ranides.assira.generic.ValueUtils;
|
|
|
|
|
-
|
|
|
|
|
-import javax.swing.*;
|
|
|
|
|
-import javax.swing.border.Border;
|
|
|
|
|
-import java.awt.*;
|
|
|
|
|
-import java.util.Optional;
|
|
|
|
|
-import java.util.regex.Matcher;
|
|
|
|
|
-import java.util.regex.Pattern;
|
|
|
|
|
-
|
|
|
|
|
-public class BorderParser {
|
|
|
|
|
-
|
|
|
|
|
- public static Border parseBorder(String expression) {
|
|
|
|
|
- Matcher hit = Pattern
|
|
|
|
|
- .compile("(none|solid|dotted|dashed|double|groove|ridge|inset|outset)(?:\\s+([0-9]+)px)?(?:\\s+(.+))?").matcher(expression);
|
|
|
|
|
-
|
|
|
|
|
- if(hit.matches()) {
|
|
|
|
|
- String style = hit.group(1);
|
|
|
|
|
- Integer size = Optional.ofNullable(hit.group(2)).map(Integer::parseInt).orElse(null);
|
|
|
|
|
- int size1 = ValueUtils.or(size, 1);
|
|
|
|
|
- Color color = Optional.ofNullable(hit.group(3)).map(CssParser::color).orElse(null);
|
|
|
|
|
- switch (style) {
|
|
|
|
|
- case "none":
|
|
|
|
|
- return BorderFactory.createEmptyBorder(size1, size1, size1, size1);
|
|
|
|
|
- case "solid":
|
|
|
|
|
- return BorderFactory.createLineBorder(color, size1);
|
|
|
|
|
- case "dotted":
|
|
|
|
|
- return BorderFactory.createDashedBorder(color, size1, size1, size1, false);
|
|
|
|
|
- case "dashed":
|
|
|
|
|
- return BorderFactory.createDashedBorder(color, size1, 2*size1, 2*size1, false);
|
|
|
|
|
- case "double":
|
|
|
|
|
- return BorderFactory.createCompoundBorder(
|
|
|
|
|
- BorderFactory.createCompoundBorder(
|
|
|
|
|
- BorderFactory.createLineBorder(color, size1),
|
|
|
|
|
- BorderFactory.createEmptyBorder(size1, size1, size1, size1)
|
|
|
|
|
- ),
|
|
|
|
|
- BorderFactory.createLineBorder(color, size1)
|
|
|
|
|
- );
|
|
|
|
|
- case "outset":
|
|
|
|
|
- return createBevelBorder(size, color, CustomBevelBorder.RAISED);
|
|
|
|
|
- case "inset":
|
|
|
|
|
- return createBevelBorder(size, color, CustomBevelBorder.LOWERED);
|
|
|
|
|
- case "groove":
|
|
|
|
|
- return BorderFactory.createCompoundBorder(
|
|
|
|
|
- createBevelBorder(size, color, CustomBevelBorder.LOWERED),
|
|
|
|
|
- createBevelBorder(size, color, CustomBevelBorder.RAISED)
|
|
|
|
|
- );
|
|
|
|
|
- case "ridge":
|
|
|
|
|
- return BorderFactory.createCompoundBorder(
|
|
|
|
|
- createBevelBorder(size, color, CustomBevelBorder.RAISED),
|
|
|
|
|
- createBevelBorder(size, color, CustomBevelBorder.LOWERED)
|
|
|
|
|
- );
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- throw new IllegalArgumentException("Unsupported border style: " + expression);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private static Border createBevelBorder(Integer size, Color color, int type) {
|
|
|
|
|
- return CustomBevelBorder.newInstance(Ref.ofNullable(size), Ref.ofNullable(color), type);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
-}
|
|
|