DataGridでlabelFunctionを指定してあるカラムのソート
itemToLabelを使います。
var co1:Object; var co2:Object; if (sortColumn.labelFunction==null) { co1 = item1[sortColumn.dataField].toString() co2 = item2[sortColumn.dataField].toString() } else { co1 = sortColumn.itemToLabel(item1); co2 = sortColumn.itemToLabel(item2); }
注意としては、itemToLabelは、Stringを返すので、
合計のlabelFunctionだったりする場合は、数値の比較ファンクションが必要です。
ObjectUtil.numericCompare(n1,n2);
とかですね。
SparkのDataGridの横スクロール2
Flex SDK4.6
sparkのDataGridの横スクロールのイベントを拾いたい場合は、
dataGrid.scroller.horizontalScrollBar.addEventListener(Event.CHANGE, onDataGridHorisontalScrollChange)
で、イベントが取得できます。
protected function onDataGridHorisontalScrollChange(event:Event):void { trace(dataGrid.grid.horizontalScrollPosition); }
で、その時の、Positionが取れます。
ただ、説明しにくいのですが、
・ItemEditorを使用。
・そのItemEditorがGridの端のほうにある。
・そのItemEditorの編集セッションがスタートする。
すると、DataGridが、編集対象のItemEditorを全て表示する為、勝手にスクロールしてくれます。
この時、horizontalScrollBar(HScrollBar)のCHANGEイベントは、発生しません。
DataGridやらGridやら、DataGridEditorやらのソースを見ると、
GridのscrollToIndexで行なっているようです。
Scrollerがイベントを送出してくれません。
対応したのがコチラ。
dataGrid.grid.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, onGridPropertyChange);
PropertyChangeEventをハンドリングします。
protected function onGridPropertyChange(event:PropertyChangeEvent):void { if (event.property=="horizontalScrollPosition") { trace(event.newValue); } }
GroupBase - Adobe ActionScript® 3(AS3 Flex)API リファレンス
他のPropertyのChangeイベントも拾ってしまうので、
なるべくPropertyChangeEvent使いたくないんですけどね。
ちょっと他に方法が思いつきませんでした。
まぁ、BindableなPropertyそんなに多くはなさそうなので。
SparkのDropDonwListの背景色
こんな感じ。
<s:DropDownList id="cmb" chromeColor="#FFFF99"/>
Setting the base color on a Spark DropDownList control in Flex 4 | Flex Examples
ここでは、baseColorで設定してますが、
Flex4でも4.6の場合は、chromeColorです。
また、ポップアップされたListの背景色は、contentBackgroundColorになります。
SparkのDataGridのスクロール
こんな感じ
dataGrid.grid.layout.horizontalScrollPosition = 0;
mxでは、コンポーネント自体に持っていたプロパティが
かなりlayoutに移行してますね。
JettyのmaxFormContentSize
以前これにはまって、設定し直してOKだったのですが、
その設定は、jetty-web.xml(WEB-INF)に行なってました。
<Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="maxFormContentSize">1000000</Set> </Configure>
その後、色々設定見直して、contexts使わずにWAR放り込み版にしてたのですが、
Jetty/Howto/Configure Form Size - Eclipsepedia
ここを参考に、jett.xmlに
<Call name="setAttribute"> <Arg>org.eclipse.jetty.server.Request.maxFormContentSize</Arg> <Arg>1000000</Arg> </Call>
と追加しましたが、これ動きません!!ひたすら20000の制約にかかります。
java.lang.IllegalStateException: Form too large529435>200000
Jettyのバージョンは、8.1.0
また、SolrのJIRAですが、
[SOLR-3159] Upgrade to Jetty 8 - ASF JIRA
ここ参考に
<Call class="java.lang.System" name="setProperty"> <Arg>org.eclipse.jetty.Request.maxFormContentSize</Arg> <Arg>1000000</Arg> </Call>
SystemPropertyでの設定を行いましたが、これも動きません!!(jetty.xmlに追加)
(本家のマニュアルにも例はないですが、「Changing the Maximum Form Size for All Apps in the JVM」とあります)
正直、jetty.xmlに記述するのが正しいか不明ですが、
maxFormContentSizeについては、面倒ですが、jetty-web.xmlに設定するのが確実です。
8.1.0以降だと修正されてるかもです。
Mavenでs2JdbcGen
久しぶりにSeaser2触ってます。
JdbcManager使ってますが、やっぱりEntity自動生成したいですね。
で、パスの問題とかあるので、mavenで実行させます。
pom.xml
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <id>default-cli</id> <configuration> <tasks> <property name="compile_classpath" refid="maven.compile.classpath" /> <ant antfile="src/main/resources/s2jdbc-gen-build.xml" target="${ant.target}" inheritRefs="true"> </ant> </tasks> </configuration> </execution> </executions> </plugin>
<?xml version="1.0" encoding="UTF-8"?> <project name="narwhal"> <target name="init"> <property name="classpathdir" value="target/classes"/> <property name="rootpackagename" value="jp.co.nosa1"/> <property name="entitypackagename" value="entity"/> <property name="javafiledestdir" value="src/main/java"/> <property name="javafileencoding" value="UTF-8"/> <property name="env" value="ut"/> <property name="jdbcmanagername" value="jdbcManager"/> <taskdef resource="s2jdbc-gen-task.properties" classpath="${compile_classpath}"/> </target> <target name="gen-entity" depends="init"> <gen-entity rootpackagename="${rootpackagename}" entitypackagename="${entitypackagename}" javafiledestdir="${javafiledestdir}" javafileencoding="${javafileencoding}" env="${env}" jdbcmanagername="${jdbcmanagername}" classpath="${compile_classpath}" /> </target> </project>
maven-antrun-pluginで実行
mvn antrun:run -Dant.target=gen-entity
参考:
MavenでS2JDBC-Genを使う - azuki note
maven で s2jdbc-gen - garbagetown