Skip to content

Commit f732166

Browse files
committed
WIP - Symbols
1 parent 08dd374 commit f732166

File tree

4 files changed

+125
-2
lines changed

4 files changed

+125
-2
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package gwt.material.design.client.base;
2+
3+
import gwt.material.design.client.constants.SymbolType;
4+
5+
public interface HasSymbols {
6+
7+
void setType(SymbolType type);
8+
9+
void setSymbol(String symbol);
10+
11+
void setFilled(boolean filled);
12+
13+
void setWeight(int weight);
14+
15+
void setGrade(int grade);
16+
17+
void setOpticalSize(int size);
18+
}

gwt-material/src/main/java/gwt/material/design/client/base/viewport/Resolution.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@
2222
public enum Resolution implements Boundary {
2323
ALL_DEVICES(new WidthBoundary(0, 2560)),
2424
ALL_MOBILE(new WidthBoundary(0, 425)),
25-
ALL_LAPTOP(new WidthBoundary(769, 2560)),
25+
ALL_LAPTOP(new WidthBoundary(769, 25000)),
2626
MOBILE_SMALL(new WidthBoundary(0, 320)),
2727
MOBILE_MEDIUM(new WidthBoundary(321, 375)),
2828
MOBILE_LARGE(new WidthBoundary(376, 425)),
2929
TABLET(new WidthBoundary(426, 768)),
3030
TABLET_AND_MOBILE(new WidthBoundary(0, 768)),
3131
LAPTOP(new WidthBoundary(769, 1024)),
3232
LAPTOP_LARGE(new WidthBoundary(1025, 1440)),
33-
LAPTOP_4K(new WidthBoundary(1441, 2560));
33+
LAPTOP_4K(new WidthBoundary(1441, 25000));
3434

3535
private final WidthBoundary boundary;
3636

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package gwt.material.design.client.constants;
2+
3+
import gwt.material.design.client.base.helper.EnumHelper;
4+
5+
public enum SymbolType implements CssType {
6+
7+
OUTLINED("material-symbols-outlined"),
8+
ROUNDED("material-symbols-rounded"),
9+
SHARP("material-symbols-sharp");
10+
11+
protected String name;
12+
13+
SymbolType(String name) {
14+
this.name = name;
15+
}
16+
17+
@Override
18+
public String getCssName() {
19+
return name;
20+
}
21+
22+
public static SymbolType fromStyleName(final String styleName) {
23+
return EnumHelper.fromStyleName(styleName, SymbolType.class, OUTLINED);
24+
}
25+
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package gwt.material.design.client.ui;
2+
3+
import com.google.gwt.dom.client.Document;
4+
import com.google.gwt.dom.client.LinkElement;
5+
import gwt.material.design.client.base.HasSymbols;
6+
import gwt.material.design.client.base.MaterialWidget;
7+
import gwt.material.design.client.base.mixin.CssNameMixin;
8+
import gwt.material.design.client.constants.SymbolType;
9+
import gwt.material.design.client.ui.html.Span;
10+
11+
public class MaterialSymbol extends MaterialWidget implements HasSymbols {
12+
13+
static {
14+
LinkElement linkElement = Document.get().createLinkElement();
15+
linkElement.setRel("stylesheet");
16+
linkElement.setHref("https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200");
17+
body().append(linkElement);
18+
}
19+
20+
protected Span span = new Span();
21+
protected CssNameMixin<Span, SymbolType> symbolTypeMixin;
22+
protected boolean filled;
23+
protected int weight = 400;
24+
protected int grade = 0;
25+
protected int opticalSize = 48;
26+
27+
public MaterialSymbol() {
28+
super(Document.get().createElement("div"));
29+
setType(SymbolType.OUTLINED);
30+
}
31+
32+
@Override
33+
protected void onLoad() {
34+
super.onLoad();
35+
36+
load();
37+
add(span);
38+
}
39+
40+
@Override
41+
public void setSymbol(String symbol) {
42+
span.getElement().setInnerText(symbol);
43+
}
44+
45+
@Override
46+
public void setType(SymbolType type) {
47+
getSymbolTypeMixin().setCssName(type);
48+
}
49+
50+
@Override
51+
public void setFilled(boolean filled) {
52+
this.filled = filled;
53+
}
54+
55+
@Override
56+
public void setWeight(int weight) {
57+
this.weight = weight;
58+
}
59+
60+
@Override
61+
public void setGrade(int grade) {
62+
this.grade = grade;
63+
}
64+
65+
@Override
66+
public void setOpticalSize(int size) {
67+
this.opticalSize = size;
68+
}
69+
70+
protected void load() {
71+
getElement().setAttribute("style", "font-variation-settings: 'FILL' 1, 'wght' 700, 'GRAD' 0, 'opsz' 48;");
72+
}
73+
74+
public CssNameMixin<Span, SymbolType> getSymbolTypeMixin() {
75+
if (symbolTypeMixin == null) {
76+
symbolTypeMixin = new CssNameMixin<>(span);
77+
}
78+
return symbolTypeMixin;
79+
}
80+
}

0 commit comments

Comments
 (0)