-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMySegmentOps.java
More file actions
63 lines (53 loc) · 1.34 KB
/
MySegmentOps.java
File metadata and controls
63 lines (53 loc) · 1.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//package lightware.richtext;
import java.util.Optional;
import org.fxmisc.richtext.model.TextOps;
public class MySegmentOps implements TextOps<AbstractSegment,String>
{
private final AbstractSegment EMPTY = new TextSegment("");
@Override
public AbstractSegment create( String text )
{
if ( text == null || text.isEmpty() ) return EMPTY;
return new TextSegment( text );
}
@Override
public AbstractSegment createEmptySeg()
{
return EMPTY;
}
@Override
public char charAt( AbstractSegment seg, int index )
{
return seg.charAt( index );
}
@Override
public String getText( AbstractSegment seg )
{
return seg.getText();
}
@Override
public int length( AbstractSegment seg )
{
if (seg == null) {
return 0;
}
return seg.length();
}
@Override
public AbstractSegment subSequence( AbstractSegment seg, int start )
{
return subSequence( seg, start, seg.length() );
}
@Override
public AbstractSegment subSequence( AbstractSegment seg, int start, int end )
{
if ( start == seg.length() || end == 0 ) return EMPTY;
Optional<AbstractSegment> opt = seg.subSequence( start, end );
return opt.orElse( EMPTY );
}
@Override
public Optional<AbstractSegment> joinSeg( AbstractSegment currentSeg, AbstractSegment nextSeg )
{
return currentSeg.join( nextSeg );
}
}