17c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala/* 27c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * Copyright (C) 2014 The Android Open Source Project 37c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * 47c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 57c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * you may not use this file except in compliance with the License. 67c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * You may obtain a copy of the License at 77c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * 87c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 97c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * 107c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 117c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 127c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * See the License for the specific language governing permissions and 147c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * limitations under the License. 157c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala */ 167c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 177c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalapackage com.android.testingcamera2; 187c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 197c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport android.content.Context; 207c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport android.content.res.TypedArray; 217c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport android.util.AttributeSet; 227c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport android.view.LayoutInflater; 237c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport android.view.View; 247c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport android.widget.LinearLayout; 257c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport android.widget.TextView; 267c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport android.widget.ToggleButton; 277c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 287c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport java.util.List; 297c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport java.util.ArrayList; 307c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 317c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport org.xmlpull.v1.XmlPullParser; 327c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport org.xmlpull.v1.XmlPullParserException; 337c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 347c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalaimport java.io.IOException; 357c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 367c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala/** 377c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * A simple linear layout to hold a set of control panes, with the ability to 387c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala * add more panes, and to serialize itself in/out of configurations. 397c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala */ 407c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvalapublic abstract class PaneLayout<T extends ControlPane> extends LinearLayout implements 417c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala ControlPane.StatusListener { 427c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 437c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private static final String DEFAULT_XML_PANE_NAME = "pane_layout"; 447c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 457c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private List<T> mPanes = new ArrayList<T>(); 467c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 477c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private List<T> mNewPanes = new ArrayList<T>(); 487c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 497c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private final String mPaneXmlName; 507c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private PaneTracker mPaneTracker; 517c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 527c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private OnClickListener mCollapseButtonListener = new OnClickListener() { 537c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private boolean mCollapsed = false; 547c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 557c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala @Override 567c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public void onClick(View v) { 577c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala if (mCollapsed) { 587c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mCollapsed = false; 597c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala // Unhide all panes 607c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala for (T pane : mPanes) { 617c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala pane.setVisibility(VISIBLE); 627c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 637c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } else { 647c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mCollapsed = true; 657c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala // Hide all panes 667c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala for (T pane : mPanes) { 677c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala pane.setVisibility(GONE); 687c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 697c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 707c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 717c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala }; 727c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 737c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public PaneLayout(Context context, AttributeSet attrs) { 747c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala super(context, attrs); 757c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 767c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mPaneXmlName = DEFAULT_XML_PANE_NAME; 777c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mPaneTracker = null; 787c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 797c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala setUpUI(context, attrs); 807c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 817c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 827c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public PaneLayout(Context context, AttributeSet attrs, String paneXmlName) { 837c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala super(context, attrs); 847c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 857c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mPaneXmlName = paneXmlName; 867c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 877c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala setUpUI(context, attrs); 887c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 897c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 907c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public void setPaneTracker(PaneTracker tracker) { 917c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mPaneTracker = tracker; 927c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 937c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 947c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public String getXmlName() { 957c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return mPaneXmlName; 967c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 977c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 987c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private void setUpUI(Context context, AttributeSet attrs) { 997c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1007c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala LayoutInflater inflater = 1017c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 1027c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1037c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala inflater.inflate(R.layout.pane_layout_header, this); 1047c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1057c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala TextView title = (TextView) findViewById(R.id.pane_layout_title_text); 1067c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1077c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala TypedArray a = 1087c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala context.getTheme().obtainStyledAttributes(attrs, R.styleable.PaneLayout, 0, 0); 1097c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1107c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala try { 1117c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala title.setText(a.getString(R.styleable.PaneLayout_headerTitle)); 1127c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } finally { 1137c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala a.recycle(); 1147c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1157c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1167c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala ToggleButton collapseButton = (ToggleButton) findViewById(R.id.pane_layout_collapse_button); 1177c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala collapseButton.setOnClickListener(mCollapseButtonListener); 1187c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1197c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1207c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public void readConfig(TestingCamera21 tc, XmlPullParser configParser) 1217c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala throws XmlPullParserException, IOException { 1227c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1237c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala configParser.require(XmlPullParser.START_TAG, XmlPullParser.NO_NAMESPACE, mPaneXmlName); 1247c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala int eventType = configParser.next(); 1257c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala while (eventType != XmlPullParser.END_TAG) { 1267c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala switch (eventType) { 1277c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala case XmlPullParser.START_TAG: 1287c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala T pane = readControlPane(tc, configParser); 1297c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mNewPanes.add(pane); 1307c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala break; 1317c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1327c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala eventType = configParser.next(); 1337c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1347c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala configParser.require(XmlPullParser.END_TAG, XmlPullParser.NO_NAMESPACE, mPaneXmlName); 1357c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1367c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1377c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public void clearConfig() { 1387c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mNewPanes.clear(); 1397c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1407c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1417c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public void activateConfig() { 1427c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala ArrayList<T> oldPanes = new ArrayList<T>(mPanes); 1437c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala for (T pane : oldPanes) { 1447c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala // This will call back to onRemoveRequested 1457c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala pane.remove(); 1467c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1477c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1487c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala for (T newPane : mNewPanes) { 1497c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala addPane(newPane); 1507c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1517c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala clearConfig(); 1527c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1537c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1547c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public void addPane(TestingCamera21 tc) { 1557c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala T newPane = createControlPane(tc, null); 1567c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala addPane(newPane); 1577c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1587c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1597c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private void addPane(T newPane) { 1607c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mPanes.add(newPane); 1617c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala if (mPaneTracker != null) { 1627c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mPaneTracker.addPane(newPane); 1637c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1647c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala addView(newPane); 1657c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1667c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1677c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public void onRemoveRequested(ControlPane p) { 1687c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala removeView(p); 1697c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala if (mPaneTracker != null) { 1707c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mPaneTracker.removePane(p); 1717c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1727c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala mPanes.remove(p); 1737c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1747c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1757c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected abstract T createControlPane(TestingCamera21 tc, AttributeSet attrs); 1767c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1777c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected abstract T readControlPane(TestingCamera21 tc, XmlPullParser configParser) 1787c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala throws XmlPullParserException, IOException; 1797c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1807c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala static class TargetPaneLayout extends PaneLayout<TargetControlPane> { 1817c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private static final String PANE_XML_NAME = "target_panes"; 1827c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1837c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public TargetPaneLayout(Context context, AttributeSet attrs) { 1847c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala super(context, attrs, PANE_XML_NAME); 1857c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1867c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1877c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected TargetControlPane createControlPane(TestingCamera21 tc, AttributeSet attrs) { 1887c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return new TargetControlPane(tc, attrs, this); 1897c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1907c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1917c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected TargetControlPane readControlPane(TestingCamera21 tc, XmlPullParser configParser) 1927c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala throws XmlPullParserException, IOException { 1937c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return new TargetControlPane(tc, configParser, this); 1947c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1957c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 1967c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 1977c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala static class CameraPaneLayout extends PaneLayout<CameraControlPane> { 1987c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private static final String PANE_XML_NAME = "camera_panes"; 1997c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2007c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public CameraPaneLayout(Context context, AttributeSet attrs) { 2017c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala super(context, attrs, PANE_XML_NAME); 2027c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2037c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2047c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected CameraControlPane createControlPane(TestingCamera21 tc, AttributeSet attrs) { 2057c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return new CameraControlPane(tc, attrs, this); 2067c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2077c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2087c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected CameraControlPane readControlPane(TestingCamera21 tc, XmlPullParser configParser) 2097c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala throws XmlPullParserException, IOException { 2107c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return new CameraControlPane(tc, configParser, this); 2117c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2127c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2137c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2147c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala static class RequestPaneLayout extends PaneLayout<RequestControlPane> { 2157c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private static final String PANE_XML_NAME = "request_panes"; 2167c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2177c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public RequestPaneLayout(Context context, AttributeSet attrs) { 2187c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala super(context, attrs, PANE_XML_NAME); 2197c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2207c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2217c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected RequestControlPane createControlPane(TestingCamera21 tc, AttributeSet attrs) { 2227c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return new RequestControlPane(tc, attrs, this); 2237c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2247c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2257c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected RequestControlPane readControlPane(TestingCamera21 tc, XmlPullParser configParser) 2267c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala throws XmlPullParserException, IOException { 2277c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return new RequestControlPane(tc, configParser, this); 2287c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2297c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2307c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2317c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2327c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala static class BurstPaneLayout extends PaneLayout<BurstControlPane> { 2337c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private static final String PANE_XML_NAME = "burst_panes"; 2347c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2357c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public BurstPaneLayout(Context context, AttributeSet attrs) { 2367c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala super(context, attrs, PANE_XML_NAME); 2377c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2387c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2397c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected BurstControlPane createControlPane(TestingCamera21 tc, AttributeSet attrs) { 2407c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return new BurstControlPane(tc, attrs, this); 2417c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2427c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2437c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected BurstControlPane readControlPane(TestingCamera21 tc, XmlPullParser configParser) 2447c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala throws XmlPullParserException, IOException { 2457c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return new BurstControlPane(tc, configParser, this); 2467c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2477c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2487c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2497c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala static class UtilPaneLayout extends PaneLayout<UtilControlPane> { 2507c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala private static final String PANE_XML_NAME = "util_panes"; 2517c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2527c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public UtilPaneLayout(Context context, AttributeSet attrs) { 2537c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala super(context, attrs, PANE_XML_NAME); 2547c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2557c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2567c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala public UtilControlPane createControlPane(TestingCamera21 tc, AttributeSet attrs) { 2577c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return new UtilControlPane(tc, attrs, this); 2587c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2597c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2607c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala protected UtilControlPane readControlPane(TestingCamera21 tc, XmlPullParser configParser) 2617c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala throws XmlPullParserException, IOException { 2627c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala return new UtilControlPane(tc, configParser, this); 2637c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2647c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala } 2657c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala 2667c5f2935442e974ce30158e35d142f7e2c3ee1a2Eino-Ville Talvala}