blob: 617f94138987a5f2c9cb5e3b45f431564e1b3798 [file] [log] [blame]
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.motorola.studio.android.generateviewbylayout.ui;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableItem;
import com.motorola.studio.android.codeutils.i18n.CodeUtilsNLS;
import com.motorola.studio.android.generateviewbylayout.codegenerators.SaveStateCodeGenerator;
import com.motorola.studio.android.generateviewbylayout.model.LayoutNode;
/**
* Dialog to Save UI state for:
* <ul>
* <li>a selected Activity/Fragment
* <li>a selected layout xml
* </ul>
*/
public class FillOnSaveInstanceStateDialog extends AbstractLayoutItemsDialog
{
public FillOnSaveInstanceStateDialog(Shell parentShell)
{
super(parentShell, CodeUtilsNLS.FillOnSaveInstanceStateDialog_DialogDescription,
CodeUtilsNLS.FillOnSaveInstanceStateDialog_DialogTitle,
CodeUtilsNLS.FillOnSaveInstanceStateDialog_ShellTitle, null);
}
@Override
protected void createCustomContentArea(Composite mainComposite)
{
//default implementation does nothing
}
@Override
protected boolean isResizable()
{
return true;
}
@Override
protected List<LayoutNode> getGuiItemsList()
{
List<LayoutNode> alreadyDeclared = new ArrayList<LayoutNode>();
if (getCodeGeneratorData() != null)
{
List<LayoutNode> allNodes = getCodeGeneratorData().getGUIItems(false);
for (LayoutNode node : allNodes)
{
if (node.isAlreadyDeclaredInCode() && !node.isAlreadySaved() && canSaveState(node))
{
alreadyDeclared.add(node);
}
}
}
return alreadyDeclared;
}
private boolean canSaveState(LayoutNode node)
{
int i = 0;
boolean canSaveState = false;
while (!canSaveState && (i < SaveStateCodeGenerator.saveStateNodeTypes.length))
{
if (SaveStateCodeGenerator.saveStateNodeTypes[i].getNodeType().equals(
node.getNodeType()))
{
canSaveState = true;
}
i++;
}
return canSaveState;
}
@Override
protected void okPressed()
{
for (TableItem item : getViewer().getTable().getItems())
{
if (item.getData() instanceof LayoutNode)
{
LayoutNode node = (LayoutNode) item.getData();
node.setSaveState(item.getChecked());
}
}
getModifier().setCodeGeneratorData(getCodeGeneratorData());
super.okPressed();
}
}