• R/O
  • SSH
  • HTTPS

util: コミット


コミットメタ情報

リビジョン226 (tree)
日時2020-08-13 02:07:40
作者hirukawa_ryo

ログメッセージ

IMPORT PROJECT: androidx-lifecycle-util

変更サマリ

差分

--- androidx-lifecycle-util/trunk/gradlew.bat (nonexistent)
+++ androidx-lifecycle-util/trunk/gradlew.bat (revision 226)
@@ -0,0 +1,104 @@
1+@rem
2+@rem Copyright 2015 the original author or authors.
3+@rem
4+@rem Licensed under the Apache License, Version 2.0 (the "License");
5+@rem you may not use this file except in compliance with the License.
6+@rem You may obtain a copy of the License at
7+@rem
8+@rem https://www.apache.org/licenses/LICENSE-2.0
9+@rem
10+@rem Unless required by applicable law or agreed to in writing, software
11+@rem distributed under the License is distributed on an "AS IS" BASIS,
12+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+@rem See the License for the specific language governing permissions and
14+@rem limitations under the License.
15+@rem
16+
17+@if "%DEBUG%" == "" @echo off
18+@rem ##########################################################################
19+@rem
20+@rem Gradle startup script for Windows
21+@rem
22+@rem ##########################################################################
23+
24+@rem Set local scope for the variables with windows NT shell
25+if "%OS%"=="Windows_NT" setlocal
26+
27+set DIRNAME=%~dp0
28+if "%DIRNAME%" == "" set DIRNAME=.
29+set APP_BASE_NAME=%~n0
30+set APP_HOME=%DIRNAME%
31+
32+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
33+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34+
35+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37+
38+@rem Find java.exe
39+if defined JAVA_HOME goto findJavaFromJavaHome
40+
41+set JAVA_EXE=java.exe
42+%JAVA_EXE% -version >NUL 2>&1
43+if "%ERRORLEVEL%" == "0" goto init
44+
45+echo.
46+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47+echo.
48+echo Please set the JAVA_HOME variable in your environment to match the
49+echo location of your Java installation.
50+
51+goto fail
52+
53+:findJavaFromJavaHome
54+set JAVA_HOME=%JAVA_HOME:"=%
55+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56+
57+if exist "%JAVA_EXE%" goto init
58+
59+echo.
60+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61+echo.
62+echo Please set the JAVA_HOME variable in your environment to match the
63+echo location of your Java installation.
64+
65+goto fail
66+
67+:init
68+@rem Get command-line arguments, handling Windows variants
69+
70+if not "%OS%" == "Windows_NT" goto win9xME_args
71+
72+:win9xME_args
73+@rem Slurp the command line arguments.
74+set CMD_LINE_ARGS=
75+set _SKIP=2
76+
77+:win9xME_args_slurp
78+if "x%~1" == "x" goto execute
79+
80+set CMD_LINE_ARGS=%*
81+
82+:execute
83+@rem Setup the command line
84+
85+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
86+
87+
88+@rem Execute Gradle
89+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
90+
91+:end
92+@rem End local scope for the variables with windows NT shell
93+if "%ERRORLEVEL%"=="0" goto mainEnd
94+
95+:fail
96+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
97+rem the _cmd.exe /c_ return code!
98+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
99+exit /b 1
100+
101+:mainEnd
102+if "%OS%"=="Windows_NT" endlocal
103+
104+:omega
--- androidx-lifecycle-util/trunk/javadoc.css (nonexistent)
+++ androidx-lifecycle-util/trunk/javadoc.css (revision 226)
@@ -0,0 +1,885 @@
1+/*
2+ * Javadoc style sheet
3+ */
4+
5+/*
6+ * 'DejaVu Sans' -> 'Meiryo'
7+ * 'DejaVu Serif' -> 'Meiryo'
8+ * 'DejaVu Sans Mono' -> 'Meiryo'
9+
10+@import url('resources/fonts/dejavu.css');
11+ */
12+
13+/*
14+ * Styles for individual HTML elements.
15+ *
16+ * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
17+ * HTML element throughout the page.
18+ */
19+
20+body {
21+ background-color:#ffffff;
22+ color:#353833;
23+ font-family:'Meiryo', Arial, Helvetica, sans-serif;
24+ font-size:14px;
25+ margin:0;
26+ padding:0;
27+ height:100%;
28+ width:100%;
29+}
30+iframe {
31+ margin:0;
32+ padding:0;
33+ height:100%;
34+ width:100%;
35+ overflow-y:scroll;
36+ border:none;
37+}
38+a:link, a:visited {
39+ text-decoration:none;
40+ color:#4A6782;
41+}
42+a[href]:hover, a[href]:focus {
43+ text-decoration:none;
44+ color:#bb7a2a;
45+}
46+a[name] {
47+ color:#353833;
48+}
49+a[name]:before, a[name]:target, a[id]:before, a[id]:target {
50+ content:"";
51+ display:inline-block;
52+ position:relative;
53+ padding-top:129px;
54+ margin-top:-129px;
55+}
56+pre {
57+ font-family:'Meiryo', monospace;
58+ font-size:14px;
59+}
60+h1 {
61+ font-size:20px;
62+}
63+h2 {
64+ font-size:18px;
65+}
66+h3 {
67+ font-size:16px;
68+ font-style:italic;
69+}
70+h4 {
71+ font-size:13px;
72+}
73+h5 {
74+ font-size:12px;
75+}
76+h6 {
77+ font-size:11px;
78+}
79+ul {
80+ list-style-type:disc;
81+}
82+code, tt {
83+ font-family:'Meiryo', monospace;
84+ font-size:14px;
85+ padding-top:4px;
86+ margin-top:8px;
87+ line-height:1.4em;
88+}
89+dt code {
90+ font-family:'Meiryo', monospace;
91+ font-size:14px;
92+ padding-top:4px;
93+}
94+table tr td dt code {
95+ font-family:'Meiryo', monospace;
96+ font-size:14px;
97+ vertical-align:top;
98+ padding-top:4px;
99+}
100+sup {
101+ font-size:8px;
102+}
103+button {
104+ font-family: 'Meiryo', Arial, Helvetica, sans-serif;
105+ font-size: 14px;
106+}
107+/*
108+ * Styles for HTML generated by javadoc.
109+ *
110+ * These are style classes that are used by the standard doclet to generate HTML documentation.
111+ */
112+
113+/*
114+ * Styles for document title and copyright.
115+ */
116+.clear {
117+ clear:both;
118+ height:0px;
119+ overflow:hidden;
120+}
121+.aboutLanguage {
122+ float:right;
123+ padding:0px 21px;
124+ font-size:11px;
125+ z-index:200;
126+ margin-top:-9px;
127+}
128+.legalCopy {
129+ margin-left:.5em;
130+}
131+.bar a, .bar a:link, .bar a:visited, .bar a:active {
132+ color:#FFFFFF;
133+ text-decoration:none;
134+}
135+.bar a:hover, .bar a:focus {
136+ color:#bb7a2a;
137+}
138+.tab {
139+ background-color:#0066FF;
140+ color:#ffffff;
141+ padding:8px;
142+ width:5em;
143+ font-weight:bold;
144+}
145+/*
146+ * Styles for navigation bar.
147+ */
148+.bar {
149+ background-color:#4D7A97;
150+ color:#FFFFFF;
151+ padding:.8em .5em .4em .8em;
152+ height:auto;/*height:1.8em;*/
153+ font-size:11px;
154+ margin:0;
155+}
156+.navPadding {
157+ padding-top: 107px;
158+}
159+.fixedNav {
160+ position:fixed;
161+ width:100%;
162+ z-index:999;
163+ background-color:#ffffff;
164+}
165+.topNav {
166+ background-color:#4D7A97;
167+ color:#FFFFFF;
168+ float:left;
169+ padding:0;
170+ width:100%;
171+ clear:right;
172+ height:2.8em;
173+ padding-top:10px;
174+ overflow:hidden;
175+ font-size:12px;
176+}
177+.bottomNav {
178+ margin-top:10px;
179+ background-color:#4D7A97;
180+ color:#FFFFFF;
181+ float:left;
182+ padding:0;
183+ width:100%;
184+ clear:right;
185+ height:2.8em;
186+ padding-top:10px;
187+ overflow:hidden;
188+ font-size:12px;
189+}
190+.subNav {
191+ background-color:#dee3e9;
192+ float:left;
193+ width:100%;
194+ overflow:hidden;
195+ font-size:12px;
196+}
197+.subNav div {
198+ clear:left;
199+ float:left;
200+ padding:0 0 5px 6px;
201+ text-transform:uppercase;
202+}
203+.subNav .navList {
204+ padding-top:5px;
205+}
206+ul.navList, ul.subNavList {
207+ float:left;
208+ margin:0 25px 0 0;
209+ padding:0;
210+}
211+ul.navList li{
212+ list-style:none;
213+ float:left;
214+ padding: 5px 6px;
215+ text-transform:uppercase;
216+}
217+ul.navListSearch {
218+ float:right;
219+ margin:0 0 0 0;
220+ padding:0;
221+}
222+ul.navListSearch li {
223+ list-style:none;
224+ float:right;
225+ padding: 5px 6px;
226+ text-transform:uppercase;
227+}
228+ul.navListSearch li label {
229+ position:relative;
230+ right:-16px;
231+}
232+ul.subNavList li {
233+ list-style:none;
234+ float:left;
235+ padding-top:10px;
236+}
237+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
238+ color:#FFFFFF;
239+ text-decoration:none;
240+ text-transform:uppercase;
241+}
242+.topNav a:hover, .bottomNav a:hover {
243+ text-decoration:none;
244+ color:#bb7a2a;
245+ text-transform:uppercase;
246+}
247+.navBarCell1Rev {
248+ background-color:#F8981D;
249+ color:#253441;
250+ margin: auto 5px;
251+}
252+.skipNav {
253+ position:absolute;
254+ top:auto;
255+ left:-9999px;
256+ overflow:hidden;
257+}
258+/*
259+ * Styles for page header and footer.
260+ */
261+.header, .footer {
262+ clear:both;
263+ margin:0 20px;
264+ padding:5px 0 0 0;
265+}
266+.indexNav {
267+ position:relative;
268+ font-size:12px;
269+ background-color:#dee3e9;
270+}
271+.indexNav ul {
272+ margin-top:0;
273+ padding:5px;
274+}
275+.indexNav ul li {
276+ display:inline;
277+ list-style-type:none;
278+ padding-right:10px;
279+ text-transform:uppercase;
280+}
281+.indexNav h1 {
282+ font-size:13px;
283+}
284+.title {
285+ color:#2c4557;
286+ margin:10px 0;
287+}
288+.subTitle {
289+ margin:5px 0 0 0;
290+}
291+.header ul {
292+ margin:0 0 15px 0;
293+ padding:0;
294+}
295+.footer ul {
296+ margin:20px 0 5px 0;
297+}
298+.header ul li, .footer ul li {
299+ list-style:none;
300+ font-size:13px;
301+}
302+/*
303+ * Styles for headings.
304+ */
305+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
306+ background-color:#dee3e9;
307+ border:1px solid #d0d9e0;
308+ margin:0 0 6px -8px;
309+ padding:7px 5px;
310+}
311+ul.blockList ul.blockList ul.blockList li.blockList h3 {
312+ background-color:#dee3e9;
313+ border:1px solid #d0d9e0;
314+ margin:0 0 6px -8px;
315+ padding:7px 5px;
316+}
317+ul.blockList ul.blockList li.blockList h3 {
318+ padding:0;
319+ margin:15px 0;
320+}
321+ul.blockList li.blockList h2 {
322+ padding:0px 0 20px 0;
323+}
324+/*
325+ * Styles for page layout containers.
326+ */
327+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer,
328+.allClassesContainer, .allPackagesContainer {
329+ clear:both;
330+ padding:10px 20px;
331+ position:relative;
332+}
333+.indexContainer {
334+ margin:10px;
335+ position:relative;
336+ font-size:12px;
337+}
338+.indexContainer h2 {
339+ font-size:13px;
340+ padding:0 0 3px 0;
341+}
342+.indexContainer ul {
343+ margin:0;
344+ padding:0;
345+}
346+.indexContainer ul li {
347+ list-style:none;
348+ padding-top:2px;
349+}
350+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
351+ font-size:12px;
352+ font-weight:bold;
353+ margin:10px 0 0 0;
354+ color:#4E4E4E;
355+}
356+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
357+ margin:5px 0 10px 0px;
358+ font-size:14px;
359+ font-family:'Meiryo', Georgia, "Times New Roman", Times, serif;
360+}
361+.serializedFormContainer dl.nameValue dt {
362+ margin-left:1px;
363+ font-size:1.1em;
364+ display:inline;
365+ font-weight:bold;
366+}
367+.serializedFormContainer dl.nameValue dd {
368+ margin:0 0 0 1px;
369+ font-size:1.1em;
370+ display:inline;
371+}
372+/*
373+ * Styles for lists.
374+ */
375+li.circle {
376+ list-style:circle;
377+}
378+ul.horizontal li {
379+ display:inline;
380+ font-size:0.9em;
381+}
382+ul.inheritance {
383+ margin:0;
384+ padding:0;
385+}
386+ul.inheritance li {
387+ display:inline;
388+ list-style:none;
389+}
390+ul.inheritance li ul.inheritance {
391+ margin-left:15px;
392+ padding-left:15px;
393+ padding-top:1px;
394+}
395+ul.blockList, ul.blockListLast {
396+ margin:10px 0 10px 0;
397+ padding:0;
398+}
399+ul.blockList li.blockList, ul.blockListLast li.blockList {
400+ list-style:none;
401+ margin-bottom:15px;
402+ line-height:1.4;
403+}
404+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
405+ padding:0px 20px 5px 10px;
406+ border:1px solid #ededed;
407+ background-color:#f8f8f8;
408+}
409+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
410+ padding:0 0 5px 8px;
411+ background-color:#ffffff;
412+ border:none;
413+}
414+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
415+ margin-left:0;
416+ padding-left:0;
417+ padding-bottom:15px;
418+ border:none;
419+}
420+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
421+ list-style:none;
422+ border-bottom:none;
423+ padding-bottom:0;
424+}
425+table tr td dl, table tr td dl dt, table tr td dl dd {
426+ margin-top:0;
427+ margin-bottom:1px;
428+}
429+/*
430+ * Styles for tables.
431+ */
432+.overviewSummary table, .memberSummary table, .typeSummary table, .useSummary table, .constantsSummary table, .deprecatedSummary table,
433+.requiresSummary table, .packagesSummary table, .providesSummary table, .usesSummary table {
434+ width:100%;
435+ border-spacing:0;
436+ border-left:1px solid #EEE;
437+ border-right:1px solid #EEE;
438+ border-bottom:1px solid #EEE;
439+}
440+.overviewSummary table, .memberSummary table, .requiresSummary table, .packagesSummary table, .providesSummary table, .usesSummary table {
441+ padding:0px;
442+}
443+.overviewSummary caption, .memberSummary caption, .typeSummary caption,
444+.useSummary caption, .constantsSummary caption, .deprecatedSummary caption,
445+.requiresSummary caption, .packagesSummary caption, .providesSummary caption, .usesSummary caption {
446+ position:relative;
447+ text-align:left;
448+ background-repeat:no-repeat;
449+ color:#253441;
450+ font-weight:bold;
451+ clear:none;
452+ overflow:hidden;
453+ padding:0px;
454+ padding-top:10px;
455+ padding-left:1px;
456+ margin:0px;
457+ white-space:pre;
458+}
459+.constantsSummary caption a:link, .constantsSummary caption a:visited,
460+.useSummary caption a:link, .useSummary caption a:visited {
461+ color:#1f389c;
462+}
463+.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link,
464+.deprecatedSummary caption a:link,
465+.requiresSummary caption a:link, .packagesSummary caption a:link, .providesSummary caption a:link,
466+.usesSummary caption a:link,
467+.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover,
468+.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover,
469+.requiresSummary caption a:hover, .packagesSummary caption a:hover, .providesSummary caption a:hover,
470+.usesSummary caption a:hover,
471+.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active,
472+.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active,
473+.requiresSummary caption a:active, .packagesSummary caption a:active, .providesSummary caption a:active,
474+.usesSummary caption a:active,
475+.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited,
476+.deprecatedSummary caption a:visited,
477+.requiresSummary caption a:visited, .packagesSummary caption a:visited, .providesSummary caption a:visited,
478+.usesSummary caption a:visited {
479+ color:#FFFFFF;
480+}
481+.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span,
482+.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span,
483+.requiresSummary caption span, .packagesSummary caption span, .providesSummary caption span,
484+.usesSummary caption span {
485+ white-space:nowrap;
486+ padding-top:5px;
487+ padding-left:12px;
488+ padding-right:12px;
489+ padding-bottom:7px;
490+ display:inline-block;
491+ float:left;
492+ background-color:#F8981D;
493+ border: none;
494+ height:16px;
495+}
496+.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd,
497+.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd,
498+.requiresSummary .tabEnd, .packagesSummary .tabEnd, .providesSummary .tabEnd, .usesSummary .tabEnd {
499+ display:none;
500+ width:5px;
501+ position:relative;
502+ float:left;
503+ background-color:#F8981D;
504+}
505+.overviewSummary [role=tablist] button, .memberSummary [role=tablist] button,
506+.typeSummary [role=tablist] button, .packagesSummary [role=tablist] button {
507+ border: none;
508+ cursor: pointer;
509+ padding: 5px 12px 7px 12px;
510+ font-weight: bold;
511+ margin-right: 3px;
512+}
513+.overviewSummary [role=tablist] .activeTableTab, .memberSummary [role=tablist] .activeTableTab,
514+.typeSummary [role=tablist] .activeTableTab, .packagesSummary [role=tablist] .activeTableTab {
515+ background: #F8981D;
516+ color: #253441;
517+}
518+.overviewSummary [role=tablist] .tableTab, .memberSummary [role=tablist] .tableTab,
519+.typeSummary [role=tablist] .tableTab, .packagesSummary [role=tablist] .tableTab {
520+ background: #4D7A97;
521+ color: #FFFFFF;
522+}
523+.rowColor th, .altColor th {
524+ font-weight:normal;
525+}
526+.overviewSummary td, .memberSummary td, .typeSummary td,
527+.useSummary td, .constantsSummary td, .deprecatedSummary td,
528+.requiresSummary td, .packagesSummary td, .providesSummary td, .usesSummary td {
529+ text-align:left;
530+ padding:0px 0px 12px 10px;
531+}
532+th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .useSummary th,
533+.constantsSummary th, .packagesSummary th, td.colFirst, td.colSecond, td.colLast, .useSummary td,
534+.constantsSummary td {
535+ vertical-align:top;
536+ padding-right:0px;
537+ padding-top:8px;
538+ padding-bottom:3px;
539+}
540+th.colFirst, th.colSecond, th.colLast, th.colConstructorName, th.colDeprecatedItemName, .constantsSummary th,
541+.packagesSummary th {
542+ background:#dee3e9;
543+ text-align:left;
544+ padding:8px 3px 3px 7px;
545+}
546+td.colFirst, th.colFirst {
547+ font-size:13px;
548+}
549+td.colSecond, th.colSecond, td.colLast, th.colConstructorName, th.colDeprecatedItemName, th.colLast {
550+ font-size:13px;
551+}
552+.constantsSummary th, .packagesSummary th {
553+ font-size:13px;
554+}
555+.providesSummary th.colFirst, .providesSummary th.colLast, .providesSummary td.colFirst,
556+.providesSummary td.colLast {
557+ white-space:normal;
558+ font-size:13px;
559+}
560+.overviewSummary td.colFirst, .overviewSummary th.colFirst,
561+.requiresSummary td.colFirst, .requiresSummary th.colFirst,
562+.packagesSummary td.colFirst, .packagesSummary td.colSecond, .packagesSummary th.colFirst, .packagesSummary th,
563+.usesSummary td.colFirst, .usesSummary th.colFirst,
564+.providesSummary td.colFirst, .providesSummary th.colFirst,
565+.memberSummary td.colFirst, .memberSummary th.colFirst,
566+.memberSummary td.colSecond, .memberSummary th.colSecond, .memberSummary th.colConstructorName,
567+.typeSummary td.colFirst, .typeSummary th.colFirst {
568+ vertical-align:top;
569+}
570+.packagesSummary th.colLast, .packagesSummary td.colLast {
571+ white-space:normal;
572+}
573+td.colFirst a:link, td.colFirst a:visited,
574+td.colSecond a:link, td.colSecond a:visited,
575+th.colFirst a:link, th.colFirst a:visited,
576+th.colSecond a:link, th.colSecond a:visited,
577+th.colConstructorName a:link, th.colConstructorName a:visited,
578+th.colDeprecatedItemName a:link, th.colDeprecatedItemName a:visited,
579+.constantValuesContainer td a:link, .constantValuesContainer td a:visited,
580+.allClassesContainer td a:link, .allClassesContainer td a:visited,
581+.allPackagesContainer td a:link, .allPackagesContainer td a:visited {
582+ font-weight:bold;
583+}
584+.tableSubHeadingColor {
585+ background-color:#EEEEFF;
586+}
587+.altColor, .altColor th {
588+ background-color:#FFFFFF;
589+}
590+.rowColor, .rowColor th {
591+ background-color:#EEEEEF;
592+}
593+/*
594+ * Styles for contents.
595+ */
596+.description pre {
597+ margin-top:0;
598+}
599+.deprecatedContent {
600+ margin:0;
601+ padding:10px 0;
602+}
603+.docSummary {
604+ padding:0;
605+}
606+ul.blockList ul.blockList ul.blockList li.blockList h3 {
607+ font-style:normal;
608+}
609+div.block {
610+ font-size:14px;
611+ font-family:'Meiryo', Georgia, "Times New Roman", Times, serif;
612+}
613+td.colLast div {
614+ padding-top:0px;
615+}
616+td.colLast a {
617+ padding-bottom:3px;
618+}
619+/*
620+ * Styles for formatting effect.
621+ */
622+.sourceLineNo {
623+ color:green;
624+ padding:0 30px 0 0;
625+}
626+h1.hidden {
627+ visibility:hidden;
628+ overflow:hidden;
629+ font-size:10px;
630+}
631+.block {
632+ display:block;
633+ margin:3px 10px 2px 0px;
634+ color:#474747;
635+}
636+.deprecatedLabel, .descfrmTypeLabel, .implementationLabel, .memberNameLabel, .memberNameLink,
637+.moduleLabelInPackage, .moduleLabelInType, .overrideSpecifyLabel, .packageLabelInType,
638+.packageHierarchyLabel, .paramLabel, .returnLabel, .seeLabel, .simpleTagLabel,
639+.throwsLabel, .typeNameLabel, .typeNameLink, .searchTagLink {
640+ font-weight:bold;
641+}
642+.deprecationComment, .emphasizedPhrase, .interfaceName {
643+ font-style:italic;
644+}
645+.deprecationBlock {
646+ font-size:14px;
647+ font-family:'Meiryo', Georgia, "Times New Roman", Times, serif;
648+ border-style:solid;
649+ border-width:thin;
650+ border-radius:10px;
651+ padding:10px;
652+ margin-bottom:10px;
653+ margin-right:10px;
654+ display:inline-block;
655+}
656+div.block div.deprecationComment, div.block div.block span.emphasizedPhrase,
657+div.block div.block span.interfaceName {
658+ font-style:normal;
659+}
660+div.contentContainer ul.blockList li.blockList h2 {
661+ padding-bottom:0px;
662+}
663+/*
664+ * Styles for IFRAME.
665+ */
666+.mainContainer {
667+ margin:0 auto;
668+ padding:0;
669+ height:100%;
670+ width:100%;
671+ position:fixed;
672+ top:0;
673+ left:0;
674+}
675+.leftContainer {
676+ height:100%;
677+ position:fixed;
678+ width:320px;
679+}
680+.leftTop {
681+ position:relative;
682+ float:left;
683+ width:315px;
684+ top:0;
685+ left:0;
686+ height:30%;
687+ border-right:6px solid #ccc;
688+ border-bottom:6px solid #ccc;
689+}
690+.leftBottom {
691+ position:relative;
692+ float:left;
693+ width:315px;
694+ bottom:0;
695+ left:0;
696+ height:70%;
697+ border-right:6px solid #ccc;
698+ border-top:1px solid #000;
699+}
700+.rightContainer {
701+ position:absolute;
702+ left:320px;
703+ top:0;
704+ bottom:0;
705+ height:100%;
706+ right:0;
707+ border-left:1px solid #000;
708+}
709+.rightIframe {
710+ margin:0;
711+ padding:0;
712+ height:100%;
713+ right:30px;
714+ width:100%;
715+ overflow:visible;
716+ margin-bottom:30px;
717+}
718+/*
719+ * Styles specific to HTML5 elements.
720+ */
721+main, nav, header, footer, section {
722+ display:block;
723+}
724+/*
725+ * Styles for javadoc search.
726+ */
727+.ui-autocomplete-category {
728+ font-weight:bold;
729+ font-size:15px;
730+ padding:7px 0 7px 3px;
731+ background-color:#4D7A97;
732+ color:#FFFFFF;
733+}
734+.resultItem {
735+ font-size:13px;
736+}
737+.ui-autocomplete {
738+ max-height:85%;
739+ max-width:65%;
740+ overflow-y:scroll;
741+ overflow-x:scroll;
742+ white-space:nowrap;
743+ box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
744+}
745+ul.ui-autocomplete {
746+ position:fixed;
747+ z-index:999999;
748+}
749+ul.ui-autocomplete li {
750+ float:left;
751+ clear:both;
752+ width:100%;
753+}
754+.resultHighlight {
755+ font-weight:bold;
756+}
757+#search {
758+ background-image:url('resources/glass.png');
759+ background-size:13px;
760+ background-repeat:no-repeat;
761+ background-position:2px 3px;
762+ padding-left:20px;
763+ position:relative;
764+ right:-18px;
765+ width:400px;
766+}
767+#reset {
768+ background-color: rgb(255,255,255);
769+ background-image:url('resources/x.png');
770+ background-position:center;
771+ background-repeat:no-repeat;
772+ background-size:12px;
773+ border:0 none;
774+ width:16px;
775+ height:17px;
776+ position:relative;
777+ left:-4px;
778+ top:-4px;
779+ font-size:0px;
780+}
781+.watermark {
782+ color:#545454;
783+}
784+.searchTagDescResult {
785+ font-style:italic;
786+ font-size:11px;
787+}
788+.searchTagHolderResult {
789+ font-style:italic;
790+ font-size:12px;
791+}
792+.searchTagResult:before, .searchTagResult:target {
793+ color:red;
794+}
795+.moduleGraph span {
796+ display:none;
797+ position:absolute;
798+}
799+.moduleGraph:hover span {
800+ display:block;
801+ margin: -100px 0 0 100px;
802+ z-index: 1;
803+}
804+.methodSignature {
805+ white-space:normal;
806+}
807+
808+/*
809+ * Styles for user-provided tables.
810+ *
811+ * borderless:
812+ * No borders, vertical margins, styled caption.
813+ * This style is provided for use with existing doc comments.
814+ * In general, borderless tables should not be used for layout purposes.
815+ *
816+ * plain:
817+ * Plain borders around table and cells, vertical margins, styled caption.
818+ * Best for small tables or for complex tables for tables with cells that span
819+ * rows and columns, when the "striped" style does not work well.
820+ *
821+ * striped:
822+ * Borders around the table and vertical borders between cells, striped rows,
823+ * vertical margins, styled caption.
824+ * Best for tables that have a header row, and a body containing a series of simple rows.
825+ */
826+
827+table.borderless,
828+table.plain,
829+table.striped {
830+ margin-top: 10px;
831+ margin-bottom: 10px;
832+}
833+table.borderless > caption,
834+table.plain > caption,
835+table.striped > caption {
836+ font-weight: bold;
837+ font-size: smaller;
838+}
839+table.borderless th, table.borderless td,
840+table.plain th, table.plain td,
841+table.striped th, table.striped td {
842+ padding: 2px 5px;
843+}
844+table.borderless,
845+table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
846+table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
847+ border: none;
848+}
849+table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
850+ background-color: transparent;
851+}
852+table.plain {
853+ border-collapse: collapse;
854+ border: 1px solid black;
855+}
856+table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
857+ background-color: transparent;
858+}
859+table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
860+table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
861+ border: 1px solid black;
862+}
863+table.striped {
864+ border-collapse: collapse;
865+ border: 1px solid black;
866+}
867+table.striped > thead {
868+ background-color: #E3E3E3;
869+}
870+table.striped > thead > tr > th, table.striped > thead > tr > td {
871+ border: 1px solid black;
872+}
873+table.striped > tbody > tr:nth-child(even) {
874+ background-color: #EEE
875+}
876+table.striped > tbody > tr:nth-child(odd) {
877+ background-color: #FFF
878+}
879+table.striped > tbody > tr > th, table.striped > tbody > tr > td {
880+ border-left: 1px solid black;
881+ border-right: 1px solid black;
882+}
883+table.striped > tbody > tr > th {
884+ font-weight: normal;
885+}
--- androidx-lifecycle-util/trunk/src/main/AndroidManifest.xml (nonexistent)
+++ androidx-lifecycle-util/trunk/src/main/AndroidManifest.xml (revision 226)
@@ -0,0 +1,3 @@
1+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2+ package="net.osdn.util.androidx.lifecycle">
3+</manifest>
--- androidx-lifecycle-util/trunk/src/main/java/net/osdn/util/androidx/lifecycle/RestorableViewModel.java (nonexistent)
+++ androidx-lifecycle-util/trunk/src/main/java/net/osdn/util/androidx/lifecycle/RestorableViewModel.java (revision 226)
@@ -0,0 +1,169 @@
1+package net.osdn.util.androidx.lifecycle;
2+
3+import android.os.Bundle;
4+import android.os.Parcel;
5+
6+import androidx.lifecycle.MutableLiveData;
7+import androidx.lifecycle.ViewModel;
8+
9+import java.io.IOException;
10+import java.io.UncheckedIOException;
11+import java.nio.file.Files;
12+import java.nio.file.Path;
13+import java.nio.file.StandardOpenOption;
14+import java.util.ArrayList;
15+import java.util.HashMap;
16+import java.util.List;
17+import java.util.Map;
18+
19+/** RestorableViewModel
20+ *
21+ */
22+public class RestorableViewModel extends ViewModel {
23+
24+ private static final String VALUES = "values";
25+ private static final String KEYS = "keys";
26+
27+ private static Map<Class<? extends RestorableViewModel>, RestorableViewModel> viewModelStore;
28+
29+ private static Map<Class<? extends RestorableViewModel>, RestorableViewModel> getViewModelStore() {
30+ if(viewModelStore == null) {
31+ viewModelStore = new HashMap<>();
32+ }
33+ return viewModelStore;
34+ }
35+
36+ private Path file;
37+ private boolean isSaveRequired = true;
38+ private Map<String, Object> state;
39+ private Map<String, MutableLiveData<?>> cache = new HashMap<>();
40+
41+ public void initialize(Path file, boolean restore, Bundle defaultState) {
42+ if(this.file != null || this.state != null) {
43+ throw new IllegalStateException("Already initialized");
44+ }
45+ this.file = file;
46+ this.state = new HashMap<>();
47+ if(defaultState != null) {
48+ for (String key : defaultState.keySet()) {
49+ state.put(key, defaultState.get(key));
50+ }
51+ }
52+ if(restore) {
53+ loadState();
54+ }
55+ }
56+
57+ /* package private */ void setSaveRequired(boolean b) {
58+ isSaveRequired = b;
59+ }
60+
61+ private void loadState() {
62+ try {
63+ byte[] data;
64+ synchronized (getClass()) {
65+ data = Files.readAllBytes(file);
66+ }
67+ Parcel parcel = Parcel.obtain();
68+ parcel.unmarshall(data, 0, data.length);
69+ parcel.setDataPosition(0);
70+ Bundle bundle = parcel.readBundle();
71+
72+ List<?> keys = bundle.getParcelableArrayList(KEYS);
73+ List<?> values = bundle.getParcelableArrayList(VALUES);
74+ if(keys == null || values == null || keys.size() != values.size()) {
75+ throw new IOException("Invalid bundle passed as restored state");
76+ }
77+ for(int i = 0; i < keys.size(); i++) {
78+ state.put((String)keys.get(i), values.get(i));
79+ }
80+ } catch(IOException ignore) {
81+ ignore.printStackTrace();
82+ }
83+ }
84+
85+ @SuppressWarnings({"rawtypes", "unchecked"})
86+ /* package private */ void saveState() {
87+ ArrayList keys = new ArrayList<>(state.size());
88+ ArrayList values = new ArrayList<>(state.size());
89+ for(Map.Entry<String, Object> entry : state.entrySet()) {
90+ keys.add(entry.getKey());
91+ values.add(entry.getValue());
92+ }
93+ Parcel parcel = Parcel.obtain();
94+ Bundle bundle = new Bundle();
95+ bundle.putParcelableArrayList(KEYS, keys);
96+ bundle.putParcelableArrayList(VALUES, values);
97+ bundle.writeToParcel(parcel, 0);
98+ try {
99+ synchronized (getClass()) {
100+ Files.write(file, parcel.marshall(),
101+ StandardOpenOption.CREATE,
102+ StandardOpenOption.TRUNCATE_EXISTING,
103+ StandardOpenOption.WRITE,
104+ StandardOpenOption.SYNC);
105+ }
106+ } catch(IOException e) {
107+ throw new UncheckedIOException(e);
108+ }
109+ }
110+
111+ protected <T> MutableLiveData<T> getLiveData(String key) {
112+ @SuppressWarnings("unchecked")
113+ MutableLiveData<T> liveData = (MutableLiveData<T>)cache.get(key);
114+ if(liveData != null) {
115+ return liveData;
116+ }
117+ if(state.containsKey(key)) {
118+ @SuppressWarnings("unchecked")
119+ T value = (T)state.get(key);
120+ liveData = new RestorableLiveData<T>(key, value);
121+ } else {
122+ liveData = new RestorableLiveData<>(key);
123+ }
124+ cache.put(key, liveData);
125+ return liveData;
126+ }
127+
128+ protected <T> MutableLiveData<T> getLiveData(String key, T initialValue) {
129+ @SuppressWarnings("unchecked")
130+ MutableLiveData<T> liveData = (MutableLiveData<T>)cache.get(key);
131+ if(liveData != null) {
132+ return liveData;
133+ }
134+ if(state.containsKey(key)) {
135+ @SuppressWarnings("unchecked")
136+ T value = (T)state.get(key);
137+ liveData = new RestorableLiveData<T>(key, value);
138+ } else {
139+ liveData = new RestorableLiveData<>(key, initialValue);
140+ }
141+ cache.put(key, liveData);
142+ return liveData;
143+ }
144+
145+ private class RestorableLiveData<T> extends MutableLiveData<T> {
146+ private String key;
147+
148+ RestorableLiveData(String key, T value) {
149+ super(value);
150+ this.key = key;
151+ }
152+
153+ RestorableLiveData(String key) {
154+ super();
155+ this.key = key;
156+ }
157+
158+ @Override
159+ public void setValue(T value) {
160+ if(state != null) {
161+ state.put(key, value);
162+ if(isSaveRequired) {
163+ saveState();
164+ }
165+ }
166+ super.setValue(value);
167+ }
168+ }
169+}
--- androidx-lifecycle-util/trunk/src/main/java/net/osdn/util/androidx/lifecycle/RestorableViewModelProvider.java (nonexistent)
+++ androidx-lifecycle-util/trunk/src/main/java/net/osdn/util/androidx/lifecycle/RestorableViewModelProvider.java (revision 226)
@@ -0,0 +1,141 @@
1+package net.osdn.util.androidx.lifecycle;
2+
3+import android.app.Activity;
4+import android.content.Context;
5+import android.os.Bundle;
6+
7+import androidx.activity.ComponentActivity;
8+import androidx.fragment.app.Fragment;
9+import androidx.lifecycle.Lifecycle;
10+import androidx.lifecycle.LifecycleObserver;
11+import androidx.lifecycle.OnLifecycleEvent;
12+
13+import java.io.IOException;
14+import java.io.UncheckedIOException;
15+import java.nio.file.Files;
16+import java.nio.file.Path;
17+import java.util.HashMap;
18+import java.util.Map;
19+import java.util.stream.Stream;
20+
21+public class RestorableViewModelProvider implements LifecycleObserver {
22+
23+ private static final String DIR = "restorable-view-model-states";
24+
25+ private static Map<Class<?>, Map<Class<? extends RestorableViewModel>, RestorableViewModel>> viewModelStoreByClass;
26+
27+ private static Map<Class<? extends RestorableViewModel>, RestorableViewModel> getViewModelStoreByClass(Class<?> cls) {
28+ if(viewModelStoreByClass == null) {
29+ viewModelStoreByClass = new HashMap<>();
30+ }
31+ Map<Class<? extends RestorableViewModel>, RestorableViewModel> viewModelStore = viewModelStoreByClass.get(cls);
32+ if(viewModelStore == null) {
33+ viewModelStore = new HashMap<>();
34+ viewModelStoreByClass.put(cls, viewModelStore);
35+ }
36+ return viewModelStore;
37+ }
38+
39+ private Path dir;
40+ private boolean restore;
41+ private Bundle defaultState;
42+ private Lifecycle lifecycle;
43+ private boolean isSaveRequired = true;
44+ private Map<Class<? extends RestorableViewModel>, RestorableViewModel> viewModelStore;
45+
46+ public RestorableViewModelProvider(Activity activity, Bundle savedInstanceState) {
47+ this(activity, activity.getClass().getCanonicalName(), savedInstanceState);
48+ defaultState = activity.getIntent().getExtras();
49+ viewModelStore = getViewModelStoreByClass(activity.getClass());
50+ if(activity instanceof ComponentActivity) {
51+ lifecycle = ((ComponentActivity)activity).getLifecycle();
52+ lifecycle.addObserver(this);
53+ }
54+ }
55+
56+ public RestorableViewModelProvider(Fragment fragment, Bundle savedInstanceState) {
57+ this(fragment.getContext(), fragment.getClass().getCanonicalName(), savedInstanceState);
58+ defaultState = fragment.getArguments();
59+ viewModelStore = getViewModelStoreByClass(fragment.getClass());
60+ lifecycle = fragment.getLifecycle();
61+ lifecycle.addObserver(this);
62+ }
63+
64+ private RestorableViewModelProvider(Context context, String name, Bundle savedInstanceState) {
65+ this.dir = context.getNoBackupFilesDir().toPath().resolve(DIR).resolve("provider-" + name);
66+ this.restore = savedInstanceState != null;
67+
68+ if(!restore) {
69+ clearAllStates();
70+ }
71+ }
72+
73+ @OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
74+ protected void onResume() {
75+ isSaveRequired = false;
76+ for(RestorableViewModel viewModel : viewModelStore.values()) {
77+ viewModel.setSaveRequired(isSaveRequired);
78+ }
79+ }
80+
81+ @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
82+ protected void onPause() {
83+ isSaveRequired = true;
84+ for(RestorableViewModel viewModel : viewModelStore.values()) {
85+ viewModel.setSaveRequired(isSaveRequired);
86+ viewModel.saveState();
87+ }
88+ }
89+
90+ @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
91+ protected void onDestroy() {
92+ if(lifecycle != null) {
93+ lifecycle.removeObserver(this);
94+ }
95+ }
96+
97+ private void clearAllStates() {
98+ if(!Files.isDirectory(dir)) {
99+ return;
100+ }
101+
102+ try (Stream<Path> files = Files.list(dir)) {
103+ files.forEach(file -> {
104+ try {
105+ Files.delete(file);
106+ } catch(IOException ignore) {
107+ ignore.printStackTrace();
108+ }
109+ });
110+ } catch(IOException ignore) {
111+ ignore.printStackTrace();
112+ }
113+ }
114+
115+ public <T extends RestorableViewModel> T get(Class<T> viewModelClass) {
116+ @SuppressWarnings("unchecked")
117+ T viewModel = (T)viewModelStore.get(viewModelClass);
118+ if(viewModel == null) {
119+ if(!Files.exists(dir)) {
120+ try {
121+ Files.createDirectories(dir);
122+ } catch(IOException e) {
123+ throw new UncheckedIOException(e);
124+ }
125+ }
126+ if(!Files.isDirectory(dir)) {
127+ throw new IllegalStateException("Not a directory: " + dir);
128+ }
129+ Path file = dir.resolve("state-" + viewModelClass.getCanonicalName());
130+ try {
131+ viewModel = viewModelClass.newInstance();
132+ viewModel.initialize(file, restore, defaultState);
133+ viewModel.setSaveRequired(isSaveRequired);
134+ } catch (IllegalAccessException | InstantiationException e) {
135+ throw new RuntimeException(e);
136+ }
137+ viewModelStore.put(viewModelClass, viewModel);
138+ }
139+ return viewModel;
140+ }
141+}
旧リポジトリブラウザで表示