-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d3a7928
commit 9715f75
Showing
2 changed files
with
26 additions
and
63 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
/* | ||
Copyright 2012-2019 Michael Pozhidaev <[email protected]> | ||
Copyright 2012-2022 Michael Pozhidaev <[email protected]> | ||
This file is part of LUWRAIN. | ||
|
@@ -17,17 +17,18 @@ | |
package org.luwrain.io; | ||
|
||
import java.util.*; | ||
import java.util.concurrent.*; | ||
import java.io.*; | ||
|
||
import org.luwrain.core.*; | ||
import org.luwrain.popups.*; | ||
import org.luwrain.script.*; | ||
import static org.luwrain.script.Hooks.*; | ||
import static org.luwrain.script2.ScriptUtils.*; | ||
|
||
public final class WebCommand implements Command | ||
{ | ||
static private final String LOG_COMPONENT = "io"; | ||
static public final String WEB_OPEN_HOOK = "luwrain.web.open"; | ||
static private final String | ||
HOOK_WEB_OPEN = "luwrain.web.open"; | ||
|
||
private final Set<String> history = new HashSet<>(); | ||
|
||
@Override public String getName() | ||
{ | ||
|
@@ -36,8 +37,7 @@ public final class WebCommand implements Command | |
|
||
@Override public void onCommand(Luwrain luwrain) | ||
{ | ||
NullCheck.notNull(luwrain, "luwrain"); | ||
final String query = Popups.text(luwrain, luwrain.i18n().getStaticStr("WebCommandPopupName"), luwrain.i18n().getStaticStr("WebCommandPopupPrefix"), ""); | ||
final String query = Popups.editWithHistory(luwrain, luwrain.i18n().getStaticStr("WebCommandPopupName"), luwrain.i18n().getStaticStr("WebCommandPopupPrefix"), "", history); | ||
if (query == null || query.trim().isEmpty()) | ||
return; | ||
final Object res = runWebOpenHook(luwrain, query); | ||
|
@@ -73,59 +73,31 @@ public final class WebCommand implements Command | |
|
||
private Object runWebOpenHook(Luwrain luwrain, String query) | ||
{ | ||
NullCheck.notNull(luwrain, "luwrain"); | ||
NullCheck.notEmpty(query, "query"); | ||
final Object obj; | ||
try { | ||
obj = new org.luwrain.script.hooks.ProviderHook(luwrain).run(WEB_OPEN_HOOK, new Object[]{query}); | ||
} | ||
catch(RuntimeException e) | ||
{ | ||
return e; | ||
} | ||
if (obj == null) | ||
return null; | ||
if (obj instanceof Boolean) | ||
{ | ||
final Boolean bool = (Boolean)obj; | ||
return bool.booleanValue()?bool:null; | ||
} | ||
final Object itemsObj = ScriptUtils.getMember(obj, "items"); | ||
if (itemsObj == null) | ||
final Object obj = provider(luwrain, HOOK_WEB_OPEN, new Object[]{query}); | ||
if (obj == null || isNull(obj)) | ||
return null; | ||
final List items = ScriptUtils.getArray(itemsObj); | ||
if (isBoolean(obj)) | ||
return new Boolean(asBoolean(obj)); | ||
final Object[] items = asArray(getMember(obj, "items")); | ||
if (items == null) | ||
return null; | ||
final List<WebSearchResult.Item> res = new ArrayList<>(); | ||
for(Object o: items) | ||
if (o != null) | ||
{ | ||
final Object titleObj = ScriptUtils.getMember(o, "title"); | ||
final Object snippetObj = ScriptUtils.getMember(o, "snippet"); | ||
final Object displayUrlObj = ScriptUtils.getMember(o, "displayUrl"); | ||
final Object clickUrlObj = ScriptUtils.getMember(o, "clickUrl"); | ||
if (titleObj == null || snippetObj == null || | ||
displayUrlObj == null || clickUrlObj == null) | ||
continue; | ||
final String title = ScriptUtils.getStringValue(titleObj); | ||
final String snippet = ScriptUtils.getStringValue(snippetObj); | ||
final String displayUrl = ScriptUtils.getStringValue(displayUrlObj); | ||
final String clickUrl = ScriptUtils.getStringValue(clickUrlObj); | ||
if (title == null || snippet == null || | ||
clickUrl == null || displayUrl == null) | ||
final String | ||
title = asString(getMember(o, "title")), | ||
snippet = asString(getMember(o, "snippet")), | ||
displayUrl = asString(getMember(o, "displayUrl")), | ||
clickUrl = asString(getMember(o, "clickUrl")); | ||
if (title == null || title.trim().isEmpty()) | ||
continue; | ||
if (title.isEmpty() || clickUrl.isEmpty()) | ||
continue; | ||
res.add(new WebSearchResult.Item(title, snippet, displayUrl, clickUrl)); | ||
res.add(new WebSearchResult.Item(title.trim(), | ||
snippet != null?snippet.trim():"", | ||
displayUrl != null?displayUrl.trim():"", | ||
clickUrl != null?clickUrl.trim():"")); | ||
} | ||
final String title; | ||
final Object titleObj = ScriptUtils.getMember(obj, "title"); | ||
if(titleObj != null) | ||
{ | ||
final String value = ScriptUtils.getStringValue(titleObj); | ||
title = value != null?value:""; | ||
} else | ||
title = ""; | ||
return new WebSearchResult(title, res.toArray(new WebSearchResult.Item[res.size()])); | ||
final String title = asString(getMember(obj, "title")); | ||
return new WebSearchResult(title != null?title.trim():"", res.toArray(new WebSearchResult.Item[res.size()])); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
/* | ||
Copyright 2012-2019 Michael Pozhidaev <[email protected]> | ||
Copyright 2012-2022 Michael Pozhidaev <[email protected]> | ||
This file is part of LUWRAIN. | ||
|
@@ -14,7 +14,6 @@ | |
General Public License for more details. | ||
*/ | ||
|
||
|
||
package org.luwrain.popups; | ||
|
||
import java.util.*; | ||
|
@@ -50,9 +49,6 @@ public WebSearchResult.Item result() | |
|
||
static protected ListArea.Params<Object> createParams(Luwrain luwrain, String name, WebSearchResult res) | ||
{ | ||
NullCheck.notNull(luwrain, "luwrain"); | ||
NullCheck.notNull(name, "name"); | ||
NullCheck.notNull(res, "res"); | ||
final ListArea.Params<Object> params = new ListArea.Params<>(); | ||
params.context = new DefaultControlContext(luwrain); | ||
params.flags = EnumSet.of(ListArea.Flags.EMPTY_LINE_TOP); | ||
|
@@ -65,7 +61,6 @@ static protected ListArea.Params<Object> createParams(Luwrain luwrain, String na | |
|
||
static protected Object[] createListItems(WebSearchResult res) | ||
{ | ||
NullCheck.notNull(res, "res"); | ||
final List<Object> r = new ArrayList<>(); | ||
for(WebSearchResult.Item i: res.getItems()) | ||
{ | ||
|
@@ -78,8 +73,6 @@ static protected Object[] createListItems(WebSearchResult res) | |
|
||
static public WebSearchResult.Item open(Luwrain luwrain, WebSearchResult webSearchResult) | ||
{ | ||
NullCheck.notNull(luwrain, "luwrain"); | ||
NullCheck.notNull(webSearchResult, "webSearchResult"); | ||
final WebSearchResultPopup popup = new WebSearchResultPopup(luwrain, webSearchResult.getTitle(), webSearchResult, Popups.DEFAULT_POPUP_FLAGS); | ||
luwrain.popup(popup); | ||
if (popup.wasCancelled()) | ||
|
@@ -96,7 +89,6 @@ public Appearance(ControlContext context) | |
} | ||
@Override public boolean isSectionItem(Object obj) | ||
{ | ||
NullCheck.notNull(obj, "obj"); | ||
return obj instanceof WebSearchResult.Item; | ||
} | ||
} | ||
|
@@ -109,7 +101,6 @@ public Transition(ListArea.Model<Object> model) | |
} | ||
@Override public boolean isSectionItem(Object obj) | ||
{ | ||
NullCheck.notNull(obj, "obj"); | ||
return obj instanceof WebSearchResult.Item; | ||
} | ||
} | ||
|